Wie ein 3D-Streudiagramm in Python machen?
-
22-09-2019 - |
Frage
Ich bin derzeit eine NX3 Matrix-Array haben. Ich möchte die drei Säulen als drei Achsen des plotten. Wie kann ich das machen?
Ich habe gegoogelt und Leute vorgeschlagen mit Matlab , aber ich bin wirklich eine harte Zeit, mit ihm zu verstehen. Ich brauche es auch ein Streudiagramm sein.
Kann jemand teach me?
Lösung
Sie können mit matplotlib für diese. matplotlib hat eine mplot3d Modul, das genau das tun, 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 obige Code erzeugt eine Figur wie:
Andere Tipps
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 ist mein 3-D-Array und für X_vals, Y_vals, Z_vals kopiert I / 1 verwendete Säule / Achse von diesem Array und übertragen auf diese Variablen / Arrays sind.
Verwenden Asymptote statt!
Dies ist, wie es aussehen kann:
http://asymptote.sourceforge.net/gallery/3D%20graphs /helix.pdf
Dies ist der Code: http://asymptote.sourceforge.net/gallery/3D%20graphs/helix. asy
Asymptote kann auch in Datendateien lesen.
Und die ganze Galerie: http://asymptote.sourceforge.net/gallery/
Asymptote verwenden aus Python:
http://www.tex.ac .uk / tex-archive / Grafik / Asymptote / base / asymptote.py