根据给定的colormap在matplotlib中创建颜色生成器
我有一系列的线条,每条线都需要用不同的颜色来绘制。其实每条线是由多个数据集组成的(比如正值、负值区域等等),所以我想创建一个生成器,能够一次提供一种颜色,像是gist_rainbow
这个颜色图谱这里展示的那样.
我发现下面的方法可以实现这个功能,但看起来非常复杂,而且更重要的是,记起来很困难。
from pylab import *
NUM_COLORS = 22
mp = cm.datad['gist_rainbow']
get_color = matplotlib.colors.LinearSegmentedColormap.from_list(mp, colors=['r', 'b'], N=NUM_COLORS)
...
# Then in a for loop
this_color = get_color(float(i)/NUM_COLORS)
而且,这个方法没有覆盖gist_rainbow
颜色图谱中的所有颜色,我还得重新定义一个颜色图。
也许使用生成器并不是最好的办法,如果是这样的话,有什么更合适的方法呢?
1 个回答
37
要从特定的颜色映射中获取颜色,你可以使用:
import pylab
NUM_COLORS = 22
cm = pylab.get_cmap('gist_rainbow')
for i in range(NUM_COLORS):
color = cm(1.*i/NUM_COLORS) # color will now be an RGBA tuple
# or if you really want a generator:
cgen = (cm(1.*i/NUM_COLORS) for i in range(NUM_COLORS))