【问题标题】:Customizing colors in matplotlib - heatmap在 matplotlib 中自定义颜色 - 热图
【发布时间】:2015-02-19 03:11:53
【问题描述】:

如何在热图中指定颜色。 在此示例中,数据是唯一的 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()

如何指定这些颜色以表示 颜色= {0:'绿色',1:'红色',2:'黑色',3:'黄色'}

【问题讨论】:

  • 您目前如何绘制数据?你在用什么功能?可以加代码吗?
  • 谢谢! @Ffisegydd 我使用 pcolor 来构建热图。代码已更新!

标签: python matplotlib data-visualization heatmap


【解决方案1】:

创建自定义颜色图并将刻度设置为整数

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 显示为“倒置”。

【讨论】:

    【解决方案2】:

    我修改了这段代码以显示 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()
    

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 2020-10-21
      • 1970-01-01
      • 2020-06-21
      • 2016-06-25
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多