matplotlib首次赋值散点颜色不改变

3 投票
1 回答
538 浏览
提问于 2025-04-17 05:20

在下面这个简单的例子中,我创建了一个只有一个点的散点图,然后在循环中使用 Collection.set_color 来改变点的颜色。如果我在第一次调用 scatter 时就设置了颜色,使用 set_color 就不会改变点的填充颜色(只会改变边框颜色)。但是如果我在创建散点图时没有指定颜色,使用 set_color 就会改变点的填充颜色。

from pylab import *
from numpy import *
coll=scatter([0],[0],s=500,c=[.1]) # omit c=[.1] here to have face color changing later
ion(); show()
for a in linspace(.1,.9):
    coll.set_color(coll.get_cmap()(a))
    draw()

这是个bug,还是我在文档中遗漏了什么呢?

1 个回答

2

我认为这是那个 matplotlib 版本的一个错误或者限制。

我用以下代码试过:

matplotlib 1.0.1 (ActivePython 2.6.7, win7 64bit)           --> reproduced the behavior
matplotlib 1.1.0.dev (ActivePython 3.2.2, winXP, 32bit)     --> works as expected

还有一个用户 Avaris 提到,他在使用 mpl 1.1.0(Windows 7,32位)时得到了预期的效果。

所以如果可以的话,我建议你升级你的安装版本。

撰写回答