在matplotlib中重新创建Colormap

时间:2018-03-29 16:41:04

标签: python matplotlib colormap

我正在尝试在matplotlib中重新创建下面显示的颜色条

this answer

下面以RGB格式给出了不同的颜色

[[255, 255, 255],
 [160, 160, 160],
 [133, 231, 137],
 [105, 191, 104],
 [207, 216, 255],
 [0, 0, 199],
 [255, 255, 0],
 [205, 0, 0]]

每种颜色都是明显渐变的开始和结束......所以"白色到灰色"色图的一部分从[255,255,255]到[160,160,160]

为方便起见,我们可以说颜色条的灰色部分从0到0.2,绿色从0.2到0.333(1/3),蓝色从1/3到2/3,黄色 - 红色从2到2 / 3比1。

谢谢!

1 个答案:

答案 0 :(得分:1)

创建色彩映射的最简单方法是matplotlib.colors.LinearSegmentedColormap.from_list()。您不仅可以提供颜色列表,还可以提供(值,颜色)元组列表,以便考虑不同的颜色间距。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors

colors = [[255, 255, 255],
          [160, 160, 160],
          [133, 231, 137],
          [105, 191, 104],
          [207, 216, 255],
          [0, 0, 199],
          [255, 255, 0],
          [205, 0, 0]]
colors = np.array(colors)/255.

bins = [0,0.2,.2,.333,.333,.666,.666,1]
color_list = list(zip(bins,colors))

cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", color_list)

a = np.linspace(0,1)
plt.imshow(np.atleast_2d(a), cmap=cmap)

plt.show()

enter image description here