使用colormaps和matplotlib循环仪

use*_*827 2 python matplotlib

我想使用matplotlib循环仪和可调色板的颜色.

cycler看起来像这样:

from cycler import cycler
plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y']) +
                           cycler('linestyle', ['-', '--', ':', '-.'])))
Run Code Online (Sandbox Code Playgroud)

如何使用从palettable获得的颜色映射替换上面的颜色列表?

import palettable
cmap = palettable.colorbrewer.diverging.PRGn_11.mpl_colormap
Run Code Online (Sandbox Code Playgroud)

对于答案,使用palettable并不重要,但了解如何使用colormap非常重要.

Pri*_*mer 6

cycler需要一个可迭代的分配'colors'.

这是一种可以生成一种方法的方法:

[plt.get_cmap('jet')(1. * i/n) for i in range(n)]
Run Code Online (Sandbox Code Playgroud)

从你原来的例子来看:

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])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

从'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])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述