如何在使用pyplot.show()时保持matplotlib的图形尺寸不变?

3 投票
1 回答
6639 浏览
提问于 2025-04-16 13:19

看看下面这个Python的例子:

import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['figure.figsize'] = [8.27, 11.69]
fig = plt.figure()
plt.show() # This line causes problems with figsize
fig.savefig('test.pdf')

如果我使用“plt.show()”,那么test.pdf的图形大小会发生很大变化(从

  • 210 x 297 [毫米] 变成
  • 213 x 250 [毫米]

我该怎么做才能保持它的大小不变呢?

1 个回答

6

网站上,有一个很好的示例,讲解如何在matplotlib图形中调整图像大小。

show()这个函数对图形大小的影响,取决于你使用的matplotlib后端。例如,当我使用TkAgg后端(这是我系统的默认设置)时,图形的宽度和高度大约增加了12个像素。但当我切换到WXAgg后端时,图形的大小反而变小了。

另外,手动调整show()显示的窗口大小也会改变图形的大小。而且,如果显示的图形需要的窗口太大,超出了屏幕的范围,那么窗口的大小会被缩小,图形的大小也会相应减少。

总之,最好的办法是在渲染PDF之前重置图形的大小。也就是说:

fig.set_size_inches(8.27, 11.69)
fig.savefig('test.pdf')

撰写回答