Question

Je suis en train de représenter graphiquement une wireframe solide de révolution. Je suis l'exemple pour une sphère mais je suis un peu à perte. J'ai tout simplifié vers le bas, mais je suis maintenant coincé sur une erreur. Je cherche également les arguments de la fonction , mais à moins que je suis malentendu quelque chose, ce code devrait être correct. Je me rends compte que ce que je suis en train de tirer ici est une ligne et non une forme, mais je ne comprends pas pourquoi je ne peux pas utiliser cette méthode pour dessiner de toute façon. Je suis en train d'obtenir cet exemple aussi simple que possible pour que je puisse passer à un solide réel graphiquement. Ici, il est:

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

Voici l'erreur:

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'
Était-ce utile?

La solution

Lorsque matplotlib écrit des arguments de données en lettres majuscules, cela signifie qu'il est attendre des matrices de données. Vous pouvez utiliser la fonction meshgrid (voir l'exemple de mplot3d ) afin de générer la grille.

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)

Notez que dans l'exemple que vous avez donné, les points de maillage pour la sphère sont construits à l'aide d'un .

scroll top