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