保存的数字与显示的数字之间的差异

时间:2014-04-28 12:33:08

标签: python matplotlib figure

我正在用matplotlib创建一个情节。一旦我有了这个数字,我就会在MainWindow的布局中显示它,并且该图看起来像这样:

enter image description here

哪个好看,一切都好。

问题在于,在显示之前,我对fig.savefig('EvolLine.png')

的数字很了解

保存的数字看起来不同。然后,当我尝试在PDF文件中使用此保存的图形时,它看起来不太好。

这是保存的数字:

enter image description here

此外,如果我使用图中工具栏中的工具手动保存图形,则保存的图形会再次显示。

我不知道为什么如果我保存图形"以编程方式"看起来很糟糕,就像压缩一样。

那么我怎么能以编程方式保存图形并使其看起来像在显示器中?

修改

如果有帮助,这就是我要保存和绘制的过程:

fig = generateFigure(someData)
fig.savefig('EvolLine.png')
MyCanvas = FigureCanvas(fig)
navi_toolbar = NavigationToolbar(MyCanvas, self)
self.ui.verticalLayoutGraph4_3.addWidget(navi_toolbar)
self.ui.verticalLayoutGraph4_3.addWidget(MyCanvas)

#just to test
fig.savefig('EvolLine_AfterPlot.png')

1 个答案:

答案 0 :(得分:1)

您的问题是,在您的程序中显示您的图形时,您正在控制纵横比,这意味着x-ticks不会重叠。但是,在保存图形时,您允许matplotlib自动猜测它应该做什么,而且这是错误的。

您可以使用fig.set_size_inches()通过设置合适的尺寸来控制宽高比,下面的代码演示了这一点并显示了不同的结果。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,100,1000)
y = np.sin(x)

plt.plot(x,y)
plt.xticks(range(0,100,2))

fig = plt.gcf()
fig.set_size_inches(16,4)

plt.savefig('filename.png')

原始

Original

固定

Fixed