2009-12-31 13 views
35

Ich habe derzeit ein nx3-Matrix-Array. Ich möchte die drei Spalten als drei Achsen darstellen. Wie kann ich das tun?Wie erstellt man ein 3D-Streudiagramm in Python?

Ich habe gegoogelt und Leute vorgeschlagen, Matlab zu verwenden, aber ich habe wirklich eine harte Zeit, es zu verstehen. Ich brauche es auch ein Streudiagramm.

Kann mir jemand beibringen?

+1

Sind Sie auf der Suche nach einer Anwendung, um das Diagramm zu erstellen, oder möchten Sie Code (in welcher Sprache) schreiben, der das Diagramm zeichnet? –

+0

Verwenden Sie asymptote - es ist kostenlos, leistungsstark, und die Qualität ist super! –

+1

Wenn Sie ein Array haben, nehme ich an, Sie haben ein Programm und dieses Array ist ein Teil davon. Bitte geben Sie uns die Möglichkeit, Ihnen zu helfen, indem Sie angeben, um welche Art von Programm (Sprache) es sich handelt! –

Antwort

66

Sie matplotlib dafür verwenden können. Matplotlib hat ein mplot3d Modul, das genau das tut, was Sie wollen.

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() 

Der Code erzeugt über eine Figur wie:

matplotlib 3D image

+0

Schöne Lösung. Beachten Sie, dass 'plt.zlabel ('zlabel')' nicht funktioniert. Um die Z-Achse zu beschriften, musst du folgendes verwenden: 'ax.set_zlabel ('Z')'. –

-3
+0

Sie sollten MayaVi ernsthaft in Betracht ziehen. Wir verwenden MayaVi hier für alle 3D-Plotting und es ist wirklich gut. –

+1

-1, ein Link ist keine Antwort. –

0

Verwenden Sie den folgenden Code, um es für mich gearbeitet:

# 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() 

während X_iso meine 3 -D Array und für X_vals, Y_vals, Z_vals kopiere ich/u sed 1 Spalte/Achse von diesem Array und diesen Variablen/Arrays zugewiesen.

Verwandte Themen