如果我在matplotlib中有一个散点图,返回一个CircleCollection:
coll = plt.scatter(rand(5), rand(5), c="k")
如何重置特定点的颜色?我注意到coll不可迭代。我想修改已绘制点的面/边缘颜色,尽管它们已经从最初的plt.scatter调用中设置了颜色。这该怎么做?
例如:只需更改第二个绘制的点的颜色,例如:
coll[1].set_color("r") # 这样不起作用,coll无法按照索引进行访问
我知道我可以在scatter中传递颜色向量给c=,但是我想故意稍后重置点,因为在最初调用plt.scatter时,并不知道所有点的颜色。
编辑:进一步解释。 我正在寻找根据不同条件对散点进行着色的最简单方法。 如果points是一个二维数组,并且您使用scatter(points[:, 0], points[:, 1], c- "k")进行绘制,则以后基于某些条件很方便,例如:
coll = plt.scatter(rand(5), rand(5), c="k")
如何重置特定点的颜色?我注意到coll不可迭代。我想修改已绘制点的面/边缘颜色,尽管它们已经从最初的plt.scatter调用中设置了颜色。这该怎么做?
例如:只需更改第二个绘制的点的颜色,例如:
coll[1].set_color("r") # 这样不起作用,coll无法按照索引进行访问
我知道我可以在scatter中传递颜色向量给c=,但是我想故意稍后重置点,因为在最初调用plt.scatter时,并不知道所有点的颜色。
编辑:进一步解释。 我正在寻找根据不同条件对散点进行着色的最简单方法。 如果points是一个二维数组,并且您使用scatter(points[:, 0], points[:, 1], c- "k")进行绘制,则以后基于某些条件很方便,例如:
# replot certain points in red with alpha
selected = points[:, 0] > 0.5
plt.scatter(selected[:, 0], selected[:, 1], c="r", alpha=0.5)
在这里,我重新绘制了旧点,但是这样做会很混乱,因为新点使用alpha绘制,所以不会产生预期的效果。根据需要对点进行重新着色的各种条件可能很复杂,并且比初始散点图制作时晚发生,因此更方便的方法是只能更改现有点的颜色,而不是根据条件将点分开并单独绘制它们。
colors = coll.get_facecolors()[0]
,然后修改colors
并将其传递给set_color
不起作用? - user248237plt.scatter
ж–ҮжЎЈпјҢд»ҘдәҶи§Јset_color
еҸӮж•°еҰӮдҪ•ж №жҚ®е…¶еҪўзҠ¶иҝӣиЎҢеӨ„зҗҶгҖӮ - tkf