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

如何减小pandas savefig生成的seaborn热图内部数字字体大小

调整seaborn相关性热图标注字号的方法

问题场景

  • 首先通过pandas生成相关性矩阵,代码如下:
corr=data.corr()
  • 之后使用seaborn绘制上三角相关性热图并保存,代码如下:
plt.figure(figsize=(16, 6))
mask = np.triu(np.ones_like(data.corr(), dtype=np.bool))
heatmap = sns.heatmap(data.corr(), mask=mask, vmin=-1, vmax=1, annot=True, cmap='BrBG')
heatmap.set_title('Correlation Heatmap', fontdict={'fontsize':18}, pad=16);

plt.savefig(dataQualityCheck+'correlationHeatmap.png', dpi=300, bbox_inches='tight', font = {'family' : 'normal', 'weight' : 'bold', 'size' : 8})
  • 生成的热图效果:
    热图效果示意
  • 实际需求:减小热图单元格内部标注数字的字体大小。

解决方案

注意:你写在plt.savefig()中的font是无效参数,savefig方法本身不接收该参数,自然无法控制热图内的标注字号。 要调整内部标注数字大小有两种常用方法:

  • 方法1:绘图时直接通过annot_kws参数指定字号
    在调用sns.heatmap()时传入annot_kws参数,该参数接收字典格式的文本属性配置,直接设置size为你需要的字号即可,数值越小字体越小,示例配置如下:
    heatmap = sns.heatmap(
        data.corr(), 
        mask=mask, 
        vmin=-1, 
        vmax=1, 
        annot=True, 
        cmap='BrBG',
        annot_kws={'size': 8} # 将内部标注字号设置为8,可按需调整数值
    )
    
    如果需要同时调整标注的字重、字体,也可以直接在字典中追加配置,比如annot_kws={'size':8, 'weight':'bold', 'family':'sans-serif'}。
  • 方法2:绘图后遍历文本对象修改字号
    如果已经生成了热图对象不想重绘,可以直接遍历热图包含的所有标注文本,逐个设置字号:
    for text in heatmap.texts:
        text.set_fontsize(8) # 替换为你需要的字号值
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.10 16:15:45