You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中绘制垂直热力图?附参考样图

在Python中绘制垂直热力图

你要的这种垂直热力图,本质就是把常规热力图的布局转成纵向排列,用seaborn或者matplotlib都能实现,下面给两种实用的实现方法:

方法一:用Seaborn Heatmap改造

Seaborn的热力图默认是横向,我们通过调整坐标轴和布局就能转成垂直样式:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# 替换成你的真实数据
data = np.random.rand(10, 5)  # 10个类别,5个数值维度
category_names = [f"类别{i+1}" for i in range(10)]
value_names = [f"指标{i+1}" for i in range(5)]

plt.figure(figsize=(7, 5))
ax = sns.heatmap(data, annot=True, cmap="RdYlBu_r", cbar=True)

# 调整标签方向和位置
ax.set_yticklabels(category_names, rotation=0)
ax.set_xticklabels(value_names, rotation=90)

# 反转y轴让类别从上到下排列(可选,按需调整)
plt.gca().invert_yaxis()

plt.xlabel("指标")
plt.ylabel("类别")
plt.title("垂直热力图")
plt.tight_layout()
plt.show()

方法二:用Matplotlib Imshow直接绘制

直接用matplotlib的imshow控制布局,灵活性更高:

import matplotlib.pyplot as plt
import numpy as np

# 模拟数据,替换成你自己的真实数据
data = np.random.rand(10, 5)
category_names = [f"类别{i+1}" for i in range(10)]
value_names = [f"指标{i+1}" for i in range(5)]

fig, ax = plt.subplots(figsize=(7, 5))
im = ax.imshow(data, cmap="RdYlBu_r", aspect="auto", origin='lower')

# 设置坐标轴标签
ax.set_yticks(np.arange(len(category_names)))
ax.set_yticklabels(category_names)
ax.set_xticks(np.arange(len(value_names)))
ax.set_xticklabels(value_names, rotation=90)

# 添加颜色条
cbar = fig.colorbar(im, ax=ax)
cbar.set_label("数值大小")

plt.xlabel("指标")
plt.ylabel("类别")
plt.title("垂直热力图")
plt.tight_layout()
plt.show()

适配参考图的小技巧

  • 调整cmap参数切换配色,比如"viridis"、"coolwarm"都能匹配不同风格;
  • 不需要显示格子数值的话,把annot=True改成annot=False;
  • 类别过多时,调大figsize的第二个参数(高度)避免标签重叠。

内容的提问来源于stack exchange,提问作者Nis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:35:25