TypeError:Axes3D

时间:2013-05-28 11:34:14

标签: python error-handling 3d matplotlib

我的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))

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

2 个答案:

答案 0 :(得分:9)

您必须首先实例化轴:

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

答案 1 :(得分:1)

David的答案实际上对我不起作用,但我通常使用它的方式如下:你可以通过创建一个新的子图来创建一个轴对象,如David所述:

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

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

更新:确定我没有在David的回答中看到更新,所以现在它也是一样的;)