如何保存高质量热力图?添加dpi后图像仍不完整
解决Matplotlib+Seaborn热力图保存时分辨率低、图像不完整的问题
针对你遇到的热力图保存后分辨率低且内容被裁剪的问题,按以下步骤修改代码即可解决:
核心问题分析
- 图像不完整:Matplotlib默认布局没有为轴标签、刻度等元素预留足够空间,导致边缘内容被裁剪
- 分辨率低:默认保存的dpi值太低,需要手动指定高分辨率参数
修改后的代码
import matplotlib.pyplot as plt import seaborn as sns plt.style.use("bmh") # sns.set_theme(style="darkgrid") # 数据透视(注意避免变量名重复,建议将原数据变量名改为df) df_pivot = df.pivot("Design Parameter", "No. of Studies", 'No. of Studies') ax = sns.heatmap(df_pivot, cmap="YlGnBu", linewidths=.5) # 1. 自动调整布局,避免内容被裁剪 plt.tight_layout() # 2. 保存时指定高分辨率dpi,配合bbox_inches确保内容完整 ax.figure.savefig("Design parameters.tiff", dpi=300, bbox_inches='tight')
关键修改点说明
plt.tight_layout():自动调整子图间距、轴标签位置,确保所有元素都在画布范围内dpi=300:设置印刷级别的高分辨率(可根据需求调整为600等更高数值)bbox_inches='tight':作为补充,强制保存整个图形内容,彻底避免边缘元素被裁剪- 注意:原代码中
x = x.pivot(...)会覆盖原始数据变量,建议修改变量名避免后续代码出错
内容的提问来源于stack exchange,提问作者user20155022
相关产品推荐
相关产品推荐

