Come creare un grafico 3D con Python e Matplotlib

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)
esempio dati su cui costruire il grafico 3D

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:

esempio di grafico 3D

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!

Grafico 3D creato con matplotlib e python

Articoli correlati

Torna in alto
Torna su