如何仅绘制热力图的Colorbar(颜色条)而不显示热力图本身?
仅绘制热力图对应的颜色条(不显示热力图)
有两种简洁的方法可以实现只显示颜色条、隐藏热力图的需求:
方法一:直接创建独立颜色条(推荐)
不需要绘制完整热力图,直接基于数据范围和目标颜色映射生成颜色条,效率更高:
import seaborn as sns import matplotlib.pyplot as plt import numpy as np # 生成示例数据 A = np.random.rand(100,100) # 获取数据的极值,保证颜色条范围和原热力图一致 vmin, vmax = A.min(), A.max() # 选用seaborn热力图默认的颜色映射(可替换为'coolwarm'等其他配色) cmap = sns.color_palette("viridis", as_cmap=True) # 创建仅容纳颜色条的画布和轴(调整figsize控制颜色条的长宽比例) fig, cax = plt.subplots(figsize=(0.5, 5)) fig.subplots_adjust(left=0.5) # 调整位置避免颜色条被裁剪 # 生成颜色条 colorbar = plt.colorbar( plt.cm.ScalarMappable(norm=plt.Normalize(vmin=vmin, vmax=vmax), cmap=cmap), cax=cax ) # 可选:给颜色条添加标签 colorbar.set_label('数值区间') plt.show()
方法二:绘制热力图后隐藏主图
先绘制完整热力图,再隐藏承载热力图的轴,只保留颜色条:
import seaborn as sns import matplotlib.pyplot as plt import numpy as np A = np.random.rand(100,100) fig, ax = plt.subplots() # 绘制热力图 g = sns.heatmap(A, ax=ax) # 隐藏热力图的轴(不显示热力图) ax.set_visible(False) # 可选:调整布局让颜色条显示更合理 plt.subplots_adjust(right=0.3) plt.show()
内容的提问来源于stack exchange,提问作者Simd
相关产品推荐
相关产品推荐

