Matplotlib命名空间问题?

时间:2016-02-04 11:38:30

标签: matplotlib plot colors namespaces colormap

我对Matplotlib.pyplot和命名空间有疑问。 请参阅以下代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import cm

x=np.linspace(0,1,28)
color=iter(cm.gist_rainbow_r(np.linspace(0,1,28)))
plt.clf()
for s in range(28):
    c=next(color)
    plt.plot(x,x*s, c=c)

plt.show()

这个想法是让彩虹地图的颜色有不同的颜色。 现在发生的事情是,在第一次执行时它起作用,但事情变得越来越奇怪。 在几次连续执行中,地图停止使用,而不是使用默认地图。

我看到问题可能在于剧情功能中的“c = c”,但我玩过不同的命名“c”,“color”,....并且找不到系统的问题在这里。

有人可以重现问题并且(连续尝试至少5次左右的代码)能够解释,这里发生了什么?

由于

1 个答案:

答案 0 :(得分:1)

这是mpl + python3.4 +的已知问题,已在mpl v1.5 +中修复。

许多样式参数都有多个别名(ex 'c' vs 'color'),其中mpl没有正确合并,艺术家基本上被告知两种不同颜色,内部意味着有两个字典其中'c''color'

在python 3.4+中,字典迭代的进程到进程顺序是随机的,因为底层哈希表的种子是随机的(这是为了防止基于故意哈希表冲突的可能的DOS攻击)。在旧版本的python中,用户提供的颜色总是在迭代顺序的后期出现,所以事情巧合了。

简单的解决方法(iirc)是使用plot(x, y, color=c)或更新到mpl 1.5.1。