2009-12-31 21 views
35

Attualmente ho una matrice matrice nx3. Voglio tracciare le tre colonne come tre assi. Come posso farlo?Come creare un grafico a dispersione 3D in Python?

Ho cercato su Google e la gente mi ha suggerito di usare Matlab, ma sto davvero facendo fatica a capirlo. Ho anche bisogno che sia una trama a dispersione.

Qualcuno può insegnarmi?

+1

Stai cercando un'applicazione per fare la trama, o vuoi scrivere codice (in qualsiasi lingua) che disegna la trama? –

+0

Usa asintoto: è gratuito, potente e la qualità è eccezionale! –

+1

Se possiedi un array, suppongo tu abbia un programma e questo array ne faccia parte. Vi preghiamo di darci una possibilità di aiutarvi indicando che tipo di programma (lingua) è! –

risposta

66

È possibile utilizzare matplotlib per questo. matplotlib ha un modulo mplot3d che farà esattamente quello che vuoi.

from matplotlib import pyplot 
from mpl_toolkits.mplot3d import Axes3D 
import random 


fig = pyplot.figure() 
ax = Axes3D(fig) 

sequence_containing_x_vals = list(range(0, 100)) 
sequence_containing_y_vals = list(range(0, 100)) 
sequence_containing_z_vals = list(range(0, 100)) 

random.shuffle(sequence_containing_x_vals) 
random.shuffle(sequence_containing_y_vals) 
random.shuffle(sequence_containing_z_vals) 

ax.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals) 
pyplot.show() 

Il codice precedente genera una figura come:

matplotlib 3D image

+0

Bella soluzione. Nota che 'plt.zlabel ('zlabel')' non funzionerà. Per etichettare l'asse z è necessario utilizzare: 'ax.set_zlabel ('Z')'. –

-3
+0

Dovresti prendere seriamente in considerazione MayaVi. Usiamo MayaVi qui per tutto il disegno 3D ed è davvero buono. –

+1

-1, un collegamento non è una risposta. –

0

Utilizzare il seguente codice ha funzionato per me:

# Create the figure 
    fig = plt.figure() 
    ax = fig.add_subplot(111, projection='3d') 

    # Generate the values 
    x_vals = X_iso[:, 0:1] 
    y_vals = X_iso[:, 1:2] 
    z_vals = X_iso[:, 2:3] 

    # Plot the values 
    ax.scatter(x_vals, y_vals, z_vals, c = 'b', marker='o') 
    ax.set_xlabel('X-axis') 
    ax.set_ylabel('Y-axis') 
    ax.set_zlabel('Z-axis') 

    plt.show() 

mentre X_iso è il mio 3 -D array e per X_vals, Y_vals, Z_vals I copiato/u sed 1 colonna/asse da quella matrice e assegnati rispettivamente a tali variabili/matrici.

Problemi correlati