In questo articolo vediamo come creare un grafico 3D in Python tramite la libreria Matplotlib. Il file utilizzato nell’esempio è disponibile nel mio repository Github a questo link https://raw.githubusercontent.com/iantomasinicola/Esercizi/main/EsempioGrafico3D.csv
Import delle librerie e operazioni preliminari
Importiamo preliminarmente le tre librerie che utilizzeremo in questo articolo
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
e acquisiamo i dati di input con il metodo read_csv di pandas
df = pd.read_csv("C:\\Users\\EsempioGrafico3D.csv")
Diamo un’occhiata al DataFrame creato con l’istruzione
df.head(10)

Il nostro obiettivo sarà quello di creare un grafico 3D sulle tre colonne Valore1, Valore2 e Valore3 stampando come etichette i relativi dati nella colonna NumeroEsperimento. Facciamo un primo passo per predisporre la creazione del grafico e stampare manualmente i valori della prima riga:
fig = plt.figure(figsize = (8, 8))
ax = fig.add_subplot(projection = '3d')
ax.set_title("Il mio grafico 3D",
fontsize = 20)
ax.set_xlabel("Valore 1",
fontsize = 16)
ax.set_ylabel("Valore 2",
fontsize = 16)
ax.set_zlabel("Valore 3",
fontsize = 16)
ax.scatter(2.1, 9.4, 5.0)
ax.text(2.1, 9.4, 5.0, "1", fontsize = 10)
Commentiamo il codice appena scritto:
- con le prime due istruzioni creiamo rispettivamente la figura nel suo complesso e il grafico. Nella seconda riga è fondamentale valorizzare il parametro projection con il valore “3d” per creare un grafico tridimensionale;
- le quattro istruzioni successive assegnano il nome ai tre assi cartesiani e al titolo del grafico, impostandone anche la dimensione del carattere;
- le ultime due istruzioni stampano rispettivamente il primo punto nel grafico 3D e la relativa etichetta.
Ecco il risultato ottenuto:

Creare il grafico 3D con Python
A questo punto vediamo come rappresentare tutti i dati contenuti nel DataFrame. Occorrerà preliminarmente convertire le colonne del DataFrame in array di numpy tramite il metodo values. Scriveremo dunque
x = df["Valore1"].values
y = df["Valore2"].values
z = df["Valore3"].values
labels = df["NumeroEsperimento"].values
e a questo punto potremmo rappresentare i dati dei primi tre array impostando il parametro alpha a 1, per ottenere un colore dei punti più opaco.
ax.scatter(x, y, z, alpha = 1)
Per stampare le etichette avremo bisogno di scrivere un ciclo for, combinando gli array tramite la funzione zip (che puoi approfondire a questo link https://www.w3schools.com/python/ref_func_zip.asp).
for x, y, z, l in zip(x, y, z, labels):
ax.text(x, y, z, l, fontsize = 10)
Ecco il risultato finale!

Articoli correlati
- Leggi come creare un istogramma su Python puoi leggere questo mio articolo di approfondimento
- Esplora la sezione del mio blog su Python e l’analisi dei dati
- Cosa imparare in un corso per Data Analyst