2

我正在尝试绘制一个旋转的线框实体。我在这里按照球体的示例进行操作,但我有点不知所措。我已经简化了所有内容,但现在遇到了错误。我也在查看这里描述的函数参数,但除非我误解了某些东西,否则这段代码应该没问题。我确实意识到我要在这里画的是一条线而不是一个形状,但我不明白为什么我不能使用这种方法来绘制它。我试图让这个例子尽可能简单,这样我就可以继续绘制一个实际的实体。这里是:

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

这是错误:

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'
4

1 回答 1

3

当 matplotlib 以大写字母编写数据参数时,这意味着它需要数据矩阵。您可以使用该meshgrid函数(参见示例mplot3d)来生成网格。

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)

请注意,在您给出的示例中,球体的网格点是使用外部产品构造的。

于 2010-12-10T02:43:58.047 回答