的Python:mplot3d,图示了坚实
-
25-09-2019 - |
题
我试图绘制线框旋转体。我下面一个球 rel="nofollow">这里的例子,但我是一个茫然位。我已经简化都记录下来,但我现在被困在一个错误。我也期待在函数的参数描述 rel="nofollow">这里,但除非我误解的东西,这段代码应该没问题。我不知道,我想在这里画一条线,而不是一个形状,但我不明白为什么我不能用这个方法反正画它。我试图让这个例子尽可能简单,这样我就可以移动到绘图实际固体。在这里它是:
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'
解决方案
当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)
注意,在你给的例子中,使用的是外积构造了球网格点一>
不隶属于 StackOverflow