自定义matplotlib中的颜色 - 热图

时间:2014-12-20 09:00:51

标签: python matplotlib data-visualization heatmap

如何在热图中指定颜色。 在此示例中,数据是4个值{0,1,2,3}

中唯一的一个
Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
Cols = ['A', 'B', 'C', 'D']

data= [[ 0, 3, 1, 1],[ 0, 1, 1, 1],[ 0, 1, 2, 1],[ 0, 2, 1, 2],[ 0, 1, 1, 1]]
print data
df = pd.DataFrame(data, index=Index, columns=Cols)
heatmap = plt.pcolor(np.array(data))
plt.colorbar(heatmap)
plt.show()

如何以表示方式指定这些颜色     colors = {0:'green',1:'red',2:'black',3:'yellow'}

2 个答案:

答案 0 :(得分:5)

创建自定义色彩映射并为整数设置滴答

from matplotlib import colors
cmap = colors.ListedColormap(['green','red','black','yellow'])
bounds=[-0.5, 0.5, 1.5, 2.5, 3.5]
norm = colors.BoundaryNorm(bounds, cmap.N)
heatmap = plt.pcolor(np.array(data), cmap=cmap, norm=norm)
plt.colorbar(heatmap, ticks=[0, 1, 2, 3])
这是你想要的吗? 请注意,您的data会被显示并且#34;倒置" listed colormap

答案 1 :(得分:0)

我修改了此代码,以显示9个节点的3种红色/黄色/绿色状态

import matplotlib.pyplot as plt
from matplotlib.colors 
import LinearSegmentedColormap
colors = [(1, 0, 0), (1, 1, 0), (0, 1, 0)]  # Red, yellow, green
n_bins = [3]  # Discretizes the interpolation into bins 
cmap_name = 'my_list' 
cm = LinearSegmentedColormap.from_list(cmap_name, colors, N=3)
threshold = 3  # max value
data = [[1, 1, 2], [1, 1, 3], [1, 1, 2]]
img = plt.imshow(data, interpolation='nearest', vmax=threshold, cmap=cm)
plt.show()