使用PS后端更改MatPlotLib图的大小

时间:2016-08-04 17:54:33

标签: matplotlib

我使用PS后端生成一个数字:

import matplotlib
matplotlib.use('ps')
from matplotlib import pyplot as plt
plt.plot((1, 2))

我想保存这个数字:

plt.savefig('test.eps', format='eps', bbox_inches='tight', pad_inches=1.0)

顺便说一下,我稍后会发布一个PNG(如果它与解决方案相关):

 gs -q -dSAFER -dBATCH -dNOPAUSE -dUseTrimBox -dEPSCrop -sDEVICE=pngalpha -sOutputFile=test.png test.eps

结果是(在eog中查看的PNG):

png

我想更改EPS或PNG数字的大小,但向dpi添加savefig kwarg不会更改输出。调用plt.gcf().set_size_inches(10, 10)也没有任何作用。如何让我的EPS或PNG文件具有更高的分辨率?

This answer与此相关,因为它暗示为dpi后端设置ps可能不是最佳选择。

更新

为了澄清,我有必要使用PS后端。目前,它是唯一一个正确呈现LaTeX彩色字符串的人。 PGF可能会或可能不会做我想要的,但我没有时间深入研究它的怪癖。通过向-r...添加gs参数,我得到了一个hacky解决方案,但更喜欢从MatPlotLib控制所有内容。

1 个答案:

答案 0 :(得分:1)

如果您先使用plt.figure创建数字,则可以提供figsize - kwarg。一个例子:

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 1))  # figsize in inches
fig.show() # if running in ipython
# plt.show() # if running as a script with "python script_name.py"

要使用特定的dpi进行保存,只需提及dpi - kwarg就可以了解数字savefig - 方法,即

fig.savefig(..., dpi=300)

请注意,如果您使用plt保存图形或绘图,它将始终与活动图形一起使用,如果碰巧打开其中几个图形,这可能不是您期望的图形。

<强>更新

1) 根据Mad Physicist的评论,dpi - kwarg似乎不适用于PS后端。我不知道为什么。