我的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))
我真的不知道这里的问题是什么
答案 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的回答中看到更新,所以现在它也是一样的;)