如果我在 matplotlib 中有一个散点图,它返回一个 CircleCollection:
coll = plt.scatter(rand(5), rand(5), c="k")
如何重置特定点的颜色?我注意到这coll
是不可迭代的。我只想更改已绘制点的面/边缘颜色,尽管它们已经从初始plt.scatter
调用中设置了颜色。如何才能做到这一点?
例如:只需更改绘制的第二个点的颜色,例如:
coll[1].set_color("r") # this does not work, coll not indexable this way
我知道我可以将颜色向量传递给c=
inscatter
但我想稍后有意地重置这些点,因为在plt.scatter
最初调用时,所有点的颜色都不知道。
编辑:进一步解释。我正在寻找根据不同条件为散点图着色的最简单方法。ifpoints
是一个二维数组,你用 绘制它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 绘制的,所以它不会产生预期的效果。根据哪些点必须重新着色的各种条件可能很复杂,并且发生的时间晚于进行初始散布时,因此仅能够更改现有点的颜色而不是根据拆分点很方便根据条件并分别绘制它们。