首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: mplot3d,绘制实体

Python: mplot3d,绘制实体
EN

Stack Overflow用户
提问于 2010-12-10 10:32:17
回答 1查看 5.1K关注 0票数 2

我正在尝试绘制一个旋转的线框图。我正在学习球体here的例子,但是我有点困惑。我已经简化了所有的事情,但现在被一个错误卡住了。我还查看了here中描述的函数参数,但除非我误解了什么,否则这段代码应该没问题。我确实意识到我在这里试图画的是一条线,而不是一个形状,但我不明白为什么我不能用这种方法来画它。我试图让这个例子尽可能简单,这样我就可以继续绘制一个实际的实体。这就是它:

代码语言:javascript
复制
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()

下面是错误:

代码语言:javascript
复制
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'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-10 10:43:58

当matplotlib用大写字母写数据参数时,这意味着它期望的是数据矩阵。您可以使用meshgrid函数(参见example for mplot3d)来生成网格。

代码语言:javascript
复制
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)

请注意,在您给出的示例中,球体的网格点是使用outer product构建的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4405156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档