无法设置Matplotlib图像DPI:设置100却显示200?
问题原因与解决方法
你遇到的问题是Matplotlib的高DPI显示器自动缩放机制导致的:
- Matplotlib会根据系统的显示缩放比例(比如Windows的200%显示缩放、Mac的Retina屏幕缩放)自动调整实际使用的DPI值。如果你的系统缩放比例是200%,设置100 DPI后会被自动乘以2,最终得到200。
- 文档中提到的默认100是基础DPI值,未包含系统缩放的调整。
解决办法
方法1:强制关闭自动缩放
通过修改rcParams的缩放因子,强制Matplotlib使用你设置的原始DPI值:
import matplotlib.pyplot as plt plt.rcParams['figure.dpi'] = 100 plt.rcParams['figure.dpi_scale_factor'] = 1 # 禁用自动缩放 fig = plt.figure(figsize=(1, 1), dpi=100) print(fig.dpi) # 输出100
方法2:区分显示DPI与保存DPI
如果你的需求是导出图像时使用100 DPI(而非显示时),只需单独设置保存用的DPI参数即可,无需修改显示DPI:
import matplotlib.pyplot as plt plt.rcParams['savefig.dpi'] = 100 # 控制保存图像的DPI fig = plt.figure(figsize=(1, 1)) fig.savefig('output.png') # 保存的图像DPI为100
内容的提问来源于stack exchange,提问作者bbrame
相关产品推荐
相关产品推荐

