Python plt.show()和fig.savefig()的打印大小不同

Python plt.show()和fig.savefig()的打印大小不同,python,matplotlib,fonts,size,font-size,Python,Matplotlib,Fonts,Size,Font Size,我必须创建一些我想整合到科学文档中的情节。由于空间限制,绘图的大小以及字体大小都非常小。 出于调试/方便的原因,在使用较小尺寸的fig.savefig(…)将其存储为PDF文件之前,最好使用较大尺寸的绘图和字体以交互方式显示绘图 我实现了在显示之前设置不同的绘图大小。但是,我无法更新字体大小。你知道这怎么可能吗 #!/usr/bin/env python import matplotlib as mpl from pylab import * params = { 'text.use

我必须创建一些我想整合到科学文档中的情节。由于空间限制,绘图的大小以及字体大小都非常小。 出于调试/方便的原因,在使用较小尺寸的
fig.savefig(…)
将其存储为PDF文件之前,最好使用较大尺寸的绘图和字体以交互方式显示绘图

我实现了在显示之前设置不同的绘图大小。但是,我无法更新字体大小。你知道这怎么可能吗

#!/usr/bin/env python

import matplotlib as mpl
from pylab import *

params = {
    'text.usetex': True,
    'font.size': 6,
}
mpl.rcParams.update(params)

fig = plt.figure(figsize=(3,2))
ax = fig.add_subplot(111)

x = [1, 2, 3]
y = [2, 2, 2]

ax.plot(x,y, label='label')

plt.tight_layout()
fig.savefig('plot.pdf')

fig.set_size_inches(10, 8, forward=True)
params = {'font.size': 20}
mpl.rcParams.update(params)
plt.show()

我使用的是Matplotlib 2.0.2,但也尝试了1.5.3。

切题说明:您不应该从pylab import*中使用
,这会让您的命名空间中充斥着各种不必要的东西:

>>> len(globals())
6
>>> from pylab import *
>>> len(globals())
988
正如您所注意到的,我认为设置任何
rc
参数都不会影响现有绘图。你可能不得不弄脏你的手,尽管只是一点点:你只需要修改
轴的少数子项:

import matplotlib as mpl
import matplotlib.pyplot as plt # <-- all you need here

params = {
    'text.usetex': True,
    'font.size': 6,
}
mpl.rcParams.update(params)

fig = plt.figure(figsize=(3,2))
ax = fig.add_subplot(111)

x = [1, 2, 3]
y = [2, 2, 2]

ax.plot(x,y, label='label')

plt.tight_layout()
fig.savefig('plot.pdf')

fig.set_size_inches(10, 8, forward=True)
# v--- change title and axeslabel font sizes manually
for item in ([ax.title, ax.xaxis.label, ax.yaxis.label] +
             ax.get_xticklabels() + ax.get_yticklabels()):
    item.set_fontsize(20)
plt.show()
将matplotlib导入为mpl

导入matplotlib.pyplot作为plt#我认为如果出于调试或放大的原因以较大比例显示,您不希望更改绘图中的任何内容。这就是为什么您可能不想更改任何rc参数,也不想更改地物大小的原因

相反,您只需按照为出版物保存的方式准备图形,保存后,更改其dpi(每英寸点数),
fig.set\u dpi(xxx)

保存的数字:

如图所示(具有300 dpi):


谢谢!这是应该的,我也很感谢您对导入的评论。我还通过增加图例的字体大小来改进了解决方案:
用于ax中的文本。get_legend().get_text():text.set_fontsize(_displayFontSize)
import matplotlib as mpl
import matplotlib.pyplot as plt

params = {
    'text.usetex': True,
    'font.size': 6,
}
plt.rcParams.update(params)

fig = plt.figure(figsize=(3,2))
ax = fig.add_subplot(111)

x = [1, 2, 3]
y = [2, 2, 2]

ax.plot(x,y, label='label')
plt.legend()
plt.tight_layout()
fig.savefig('plot.pdf')

fig.set_dpi(300)

plt.show()