Python 将颜色贴图与matplotlib Cycle一起使用

Python 将颜色贴图与matplotlib Cycle一起使用,python,matplotlib,Python,Matplotlib,我想使用matplotlib cycler和palettable中的颜色 cycler看起来像这样: from cycler import cycler plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y']) + cycler('linestyle', ['-', '--', ':', '-.']))) 如何用从palettable获得的颜色贴图替换上面的颜色列表 i

我想使用matplotlib cycler和palettable中的颜色

cycler看起来像这样:

from cycler import cycler
plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y']) +
                           cycler('linestyle', ['-', '--', ':', '-.'])))
如何用从palettable获得的颜色贴图替换上面的颜色列表

import palettable
cmap = palettable.colorbrewer.diverging.PRGn_11.mpl_colormap

对于答案,使用palettable并不重要,但知道如何使用colormap很重要。

cycler
需要一个iterable来指定给
'colors'

以下是一种生成方法:

[plt.get_cmap('jet')(1. * i/n) for i in range(n)]
从你最初的例子来看:

plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y']) +
                           cycler('linestyle', ['-', '--', ':', '-.'])))

x = [1,2,3,4]
for i in range(4):
    plt.plot([_ + i for _ in x])

从“jet”颜色映射到修改后的列表:

n = 4 # Number of colors
new_colors = [plt.get_cmap('jet')(1. * i/n) for i in range(n)]

plt.rc('axes', 
       prop_cycle=(cycler('color', new_colors) + 
                   cycler('linestyle', ['-', '--', ':', '-.'])))

for i in range(4):
    plt.plot([_ + i for _ in x])

在修改后的示例代码中,缺少列表
x
的定义。