尽管使用pyplot.show(),我如何使用matplotlib保持图形大小不变?

Phi*_*erg 3 python matplotlib

看看下面的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')
Run Code Online (Sandbox Code Playgroud)

如果我使用"plt.show()",test.pdf的数字大小发生很大变化(来自

  • 210 x 297 [mm] to
  • 213 x 250 [mm]

为了保持不变,我该怎么做?

srg*_*erg 6

SciPy网站上的matplotlib数据中有一个很好的调整图像大小的演示.

show()图形大小的影响取决于使用哪个matplotlib后端.例如,当我使用TkAgg后端(我的系统上的默认值)时,它增加了大约12个像素的宽度和高度.但是当我切换到WXAgg后端时,数字大小实际上减少了.

此外,手动调整显示的窗口大小show()也会更改图形大小.此外,如果显示图形将需要对于屏幕来说太大的窗口,则窗口尺寸将减小,并且图形尺寸相应地减小.

在任何情况下,最好的选择可能是在渲染pdf之前重置图形大小.即:

fig.set_size_inches(8.27, 11.69)
fig.savefig('test.pdf')
Run Code Online (Sandbox Code Playgroud)