4

我的 Axes3D 绘图仪出现问题,每次我放一些东西我都会得到TypeError: unbound method scatter() must be called with Axes3D instance as first argument (got list instance instead)

而且我不太明白它想要我什么样的类型,因为我只想将单个点的 x、y、z 坐标放入。(这些可以是列表或整数,都给出错误。)

Axes3D.scatter( Xc[l], Yc[l], Zc[l], c=(i/nbodies,i/nbodies,i/nbodies))

我真的不知道这里有什么问题

4

2 回答 2

10

您必须先实例化轴:

ax = Axes3D(plt.gcf())
ax.scatter( Xc[l], Yc[l], Zc[l], c=(i/nbodies,i/nbodies,i/nbodies))

或者,您可以使用

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter( Xc[l], Yc[l], Zc[l], c=(i/nbodies,i/nbodies,i/nbodies))
于 2013-05-28T11:43:53.510 回答
1

大卫的回答实际上对我不起作用,但我通常使用它的方式是这样的:你可以创建一个轴对象,正如大卫所说,通过创建一个新的子图:

fig = figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(1,2,3)

scatter() 是一个必须在对象上调用的方法。这样做时,传递给方法的第一个参数始终是对象本身。这就是为什么当在类 Axes3D 上调用它时,缺少对象,因此缺少正确的第一个参数。

更新:好的,我没有在大卫的回答中看到更新,所以现在当然是一样的;)

于 2013-05-28T11:51:46.873 回答