在matplotlib中显示我的情节时,我也尝试将其保存为使用不同尺寸的png。我正在复制我的主要人物(print_fig = fig),然后更改print_fig大小(print_fig.set_size_inches(7,3))。然而,这适用于我原来的无花果而不仅仅是print_fig。有什么办法可以“克隆”一个数字对象吗?
我的代码看起来像这样:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
fig = plt.figure()
ax = plt.subplot(111)
ax.set_ylabel("y-label")
for i in xrange(5):
ax.plot(x, i * x, label='$y = %ix$' % i)
ax.legend()
#change dimension of figure for print
#clone fig displayed
print_fig = fig
print_fig.set_size_inches(7,3)
print_fig.savefig('print_fig.png')
plt.show()
这就是我的屏幕:
答案 0 :(得分:1)
如果你想要的是以不同的分辨率保存png,你不需要调整图形的大小。您可以使用dpi
中的savefig
关键字控制图片大小。
当您拨打savefig
时,默认使用rc savefig.dpi
(您可以在.matplotlibrc
文件中查看它,通常为100)。因此,如果您想更改输出文件的分辨率,只需按照您想要的数量缩放dpi:
plt.savefig('myfig100.png', dpi=100)
plt.savefig('myfig50.png', dpi=50)
第二个将具有第一个的宽度和高度的一半。
如果你想改变宽度/高度的比例,那么当然这没有用。你正在做的是改变数字比例以保存的正确方法。但是如你所见,它会改变你的窗户。如果您没有在show()
之后绘制任何其他内容,则可以执行以下操作:
show()
fig.set_size_inches(7,3)
savefig()
这样,除非您对图形进行进一步更改,否则您将能够使用所需的尺寸进行保存,并且屏幕上的图形不会更新为这些尺寸。
答案 1 :(得分:0)
这是一个想法:一些Matplotlib后端不显示任何内容,如果我没记错(如pdf
后端),那么也许你可以switch to another backend,改变数字大小(不会是显示在屏幕上),然后保存(然后切换回原始后端)。