Matplotlib散点图标记大小

9

我正在尝试使用matplotlib绘制3D散点图,但问题是我无法更改标记的大小。我有以下代码:

scat = plt.scatter([boid_.pos[0] for boid_ in flock],
                   [boid_.pos[1] for boid_ in flock],
                   [boid_.pos[2] for boid_ in flock], 
                   marker='o', s=5)

但是我遇到了错误。
TypeError: scatter() got multiple values for keyword argument 's'

没有这个,情节还是可以的。问题在哪里?或者有没有其他方法来改变大小?
1个回答

22

这个函数在关键字参数之前接收两个参数:

scatter(x, y, s=20, ...)

而你传入了三个参数,因此你重复指定了s(一次是隐式的,一次是显式的)。

实际上,我认为你正在尝试使用2D散点图函数而不是3D函数。你可能想要这样做:

from mpl_toolkits.mplot3d import Axes3D
Axes3D.scatter( ... )

也许我应该在我的帖子中写明,但是我之前有 fig=plt.figure()ax = Axes3D(fig)。如果我使用 Axes3D.scatter 仍然会出现错误:TypeError: unbound method scatter() must be called with Axes3D instance as first argument (got list instance instead) - PerroNoob
1
很抱歉,我已经解决了问题。我发现只需要使用 ax = fig.add_subplot(111, projection='3d') 然后再使用 ax.scatter() 就不会出错了。你的回答让我意识到可能是散点图出了问题。感谢你的帮助。 - PerroNoob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接