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

Matplotlib中figsize是否有上限?如何生成更大尺寸PNG图片?

问题:Matplotlib调整figsize后保存的PNG图片尺寸始终不变?

我尝试保存一张尺寸超过显示器分辨率的大图片,但增大figsize后生成的PNG图片尺寸始终相同。如下两个示例生成的文件完全一致:

第一个示例代码:

import matplotlib.pylab as plt 
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(10, 100)) 
ax[0].plot([0, 1], [0, 1]) 
ax[1].plot([0, 1], [0, 1]) 
fig.savefig('test1.png') 
plt.close() 

第二个示例代码:

fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(10, 150)) 
ax[0].plot([0, 1], [0, 1]) 
ax[1].plot([0, 1], [0, 1]) 
fig.savefig('test2.png') 
plt.close() 

请问是否有办法生成更大尺寸的图片?


回答

这个问题我之前也碰到过,核心原因是Matplotlib的图片尺寸计算逻辑:figsize是英寸单位,最终图片的像素尺寸由「figsize × dpi」决定。你之前的代码只调整了figsize,但没有显式指定dpi参数,导致Matplotlib默认使用了与屏幕相关的固定dpi值(比如你的显示器dpi),所以即使figsize变大,最终像素尺寸也没变化。

解决这个问题很简单,有两种常用方法:

方法1:在savefig时显式指定dpi

直接在保存图片的时候传入dpi参数,自定义每英寸的像素数,这样就能按figsize的比例放大图片:

import matplotlib.pylab as plt
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(10, 100))
ax[0].plot([0, 1], [0, 1])
ax[1].plot([0, 1], [0, 1])
fig.savefig('test1.png', dpi=100)  # 这里指定dpi值,按需调整
plt.close()

方法2:创建Figure时就指定dpi

也可以在初始化子图的时候直接设置dpi,这样后续savefig会默认使用这个dpi值:

import matplotlib.pylab as plt
fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(10, 150), dpi=100)
ax[0].plot([0, 1], [0, 1])
ax[1].plot([0, 1], [0, 1])
fig.savefig('test2.png')
plt.close()

用这两种方法后,test1.png的像素尺寸会是10×100=1000宽 × 100×100=10000高,test2.png则是10×100=1000宽 × 150×100=15000高,尺寸差异就会体现出来了。如果需要更大的图片,你可以同时调大figsize和dpi,按需组合就能得到想要的像素尺寸。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:42:11