Python: mplot3d, die grafische Darstellung eine solide
-
25-09-2019 - |
Frage
Ich versuche, ein Drahtgitter Rotationskörper grafisch darzustellen. Ich folge dem Beispiel für eine Kugel hier aber ich bin ein Bit mit einem Verlust. Ich habe alles nach unten vereinfacht, aber bin jetzt auf einen Fehler fest. Ich suche auch an den Funktionsargumente beschrieben hier , aber es sei denn, ich bin etwas Missverständnis, sollte dieser Code in Ordnung sein. Ich erkennen, dass das, was ich versuche, hier zu zeichnen eine Linie ist und nicht eine Form, aber ich verstehe nicht, warum ich diese Methode nicht verwenden kann, es trotzdem zu ziehen. Ich versuche, dieses Beispiel so einfach wie möglich zu bekommen, damit ich die grafische Darstellung eines tatsächlichen festen gehen kann. Hier ist sie:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plot
import numpy
import pylab
fig = plot.figure()
ax = Axes3D(fig)
n = numpy.linspace(0, 100)
x = n
y = x**2
z = 1
ax.plot_wireframe(x, y, z)
plot.show()
Hier ist der Fehler:
Traceback (most recent call last):
File "test.py", line 14, in <module>
ax.plot_wireframe(x, y, z)
File "/usr/lib/pymodules/python2.6/mpl_toolkits/mplot3d/axes3d.py", line 687, in plot_wireframe
rows, cols = Z.shape
AttributeError: 'int' object has no attribute 'shape'
Lösung
Wenn matplotlib Daten Argumente in Großbuchstaben schreibt, das heißt, es wird erwartet, Matrizen von Daten. Sie können die meshgrid
Funktion (siehe Beispiel für mplot3d
rel="nofollow"> ), um das Gitter zu erzeugen.
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plot
import numpy
import pylab
fig = plot.figure()
ax = Axes3D(fig)
n = numpy.linspace(0, 100)
x = n
y = x**2
X, Y = numpy.meshgrid(x, y)
Z = numpy.ones_like( X )
ax.plot_wireframe(X, Y, Z)
Beachten Sie, dass Sie in dem Beispiel gab, die Gitterpunkte für die Kugel konstruiert werden unter Verwendung eines äußere Produkt .