如何在matplotlib图中添加新颜色(或使用colormaps)?

时间:2016-04-12 07:21:02

标签: python matplotlib

我已经看到了几个类似的问题,但没有一个能回答我的确切问题,所以请在标记之前加以承认。

我必须在图表上绘制n行。 n的标准值是10,但它可以变化。以前,我用过

ax.set_color_cycle([plt.cm.Accent(i) for i in np.linspace(0, 1, limit)])

对我来说效果很好。

但是,这种方法最近已经贬值了,我的程序也提出警告,使用set_prop_cycle

我无法在文档http://matplotlib.org/api/axes_api.html中找到任何符合我需要的示例,例如使用重点或热门或酷等颜色条。

更新

测试示例代码:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)
limit=10
ax.set_color_cycle([plt.cm.Accent(i) for i in np.linspace(0, 1, limit)])
for limit in range(1,limit+1):
       x=np.random.randint(10, size=10)
       y=limit*x
       plt.plot(x,y,lw=2, label=limit)
       plt.legend(loc='best')

这告诉我的是: enter image description here

问题是如何使用色彩图在颜色或排序的不同色调之间进行选择? http://matplotlib.org/users/colormaps.html

1 个答案:

答案 0 :(得分:1)

您需要稍微不同的公式才能使用更通用的set_prop_cycle。您必须使用'color'为参数plt.cycler创建一个循环器,其余的就像您之前一样:

import matplotlib.pyplot as plt
import numpy as np

limit=10

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_prop_cycle(plt.cycler('color', plt.cm.Accent(np.linspace(0, 1, limit))))
for limit in range(1,limit+1):
    x=np.random.randint(10, size=10)
    y=limit*x
    plt.plot(x,y,lw=2, label=limit)
    plt.legend(loc='best')