为我的热图添加图例

Posted

技术标签:

【中文标题】为我的热图添加图例【英文标题】:Add a legend to my heatmap plot 【发布时间】:2015-11-21 01:10:42 【问题描述】:

我正在尝试将数据从 csv 文件转换为热图。目前,我的热图如下所示:

但它错过了一个传奇!这是我的代码:

import matplotlib.pyplot as plt
import numpy as np

column_labels = list(range(0,24))
row_labels = ["Lundi",
              "Mardi",
              "Mercredi",
              "Jeudi",
              "Vendredi",
              "Samedi",
              "Dimanche"]
data = np.array([
                [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0],
                [0,0,0,0,0,0,0,434,560,0,650,0,0,0,0,340,980,0,0,0,880,0,434,343],
                [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0],
                [0,0,0,0,0,0,0,434,560,0,650,0,0,0,0,340,980,0,0,0,880,0,434,343],
                [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0],
                [0,0,0,0,0,0,0,434,560,0,650,0,0,0,0,340,980,0,0,0,880,0,434,343],
                [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0]
                ])
fig, axis = plt.subplots() # il me semble que c'est une bonne habitude de faire supbplots
heatmap = axis.pcolor(data, cmap=plt.cm.Blues) # heatmap contient les valeurs

axis.set_yticks(np.arange(data.shape[0])+0.5, minor=False)
axis.set_xticks(np.arange(data.shape[1])+0.5, minor=False)

axis.invert_yaxis()

axis.set_yticklabels(row_labels, minor=False)
axis.set_xticklabels(column_labels, minor=False)

fig.set_size_inches(11.03, 3.5)

plt.savefig('test.png', dpi=100)

我怎样才能有这个情节的传奇?就像在这个:

非常感谢您的帮助!

【问题讨论】:

我不熟悉使用热图,但对于 plt.imshow 我只使用 plt.legend。如果这不起作用,您可以考虑只创建一个带有 1D 热图的子图,其中输入只是从 0 到您的最高数字的列表。 【参考方案1】:

听起来你想要的是一个彩条。绘制热图后,您可以使用 plt.colorbar(heatmap) 添加颜色条。

【讨论】:

在哪里heatmap = plt.pcolor(data)

以上是关于为我的热图添加图例的主要内容,如果未能解决你的问题,请参考以下文章

使用 Matplotlib 在带有图例的热图中显示不同大小的圆圈

seaborn 热图图中的离散图例

ComplexHeatmap:如何以不同的方式放置热图图例和注释图例?

如何在图像热图(python)中设置图例?

使用 geopandas 从热图中的图例中删除 NaN

绘图热图的样式