如何在单个代码单元格中输出多个独立热力图并添加色标描述
解决热力图上下独立布局+色标添加描述的方案
没问题,我来帮你搞定这个需求!原来的代码因为没有指定绘图的坐标轴,导致两个热力图默认叠加在同一个画布上,咱们只需要借助matplotlib的子图布局就能实现上下独立显示,同时用seaborn的内置参数给色标加描述。
完整代码示例
import numpy as np import seaborn as sns import matplotlib.pyplot as plt # 设置随机种子保证结果可复现 np.random.seed(0) sns.set() # 创建测试数据 uniform_data1 = np.random.rand(10, 12) uniform_data2 = np.random.rand(5, 6) # 创建2行1列的子图布局,figsize可按需调整尺寸 fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(10, 8)) # 绘制第一个热力图:指定子图、给色标加描述 sns.heatmap(uniform_data1, ax=ax1, cbar_kws={'label': '第一组数据的数值强度'}) ax1.set_title('第一组随机数据热力图') # 可选:给每个图添加标题 # 绘制第二个热力图:同样指定子图和色标描述 sns.heatmap(uniform_data2, ax=ax2, cbar_kws={'label': '第二组数据的数值强度'}) ax2.set_title('第二组随机数据热力图') # 可选:给每个图添加标题 # 自动调整子图间距,避免标签、标题互相遮挡 plt.tight_layout() plt.show()
关键参数解释
plt.subplots(nrows=2, ncols=1):直接创建上下排列的两个独立子图,返回的ax1和ax2分别对应上下两个绘图区域ax=ax1/ax2:强制seaborn在指定的子图上绘制热力图,彻底解决两个图叠加的问题cbar_kws={'label': '你的描述文本'}:通过这个参数给色标(颜色条)添加自定义描述标签,精准满足你的需求plt.tight_layout():自动优化子图之间的间距,让标题、轴标签不会互相遮挡,生成的图表更适合报告使用
效果说明
运行这段代码后,你会得到两个完全独立的热力图——第一个在上、第二个在下,每个图都带有自己的色标和自定义描述,完全符合报告生成的格式要求。
内容的提问来源于stack exchange,提问作者Leockl




