我正在用matplotlib创建一个情节。一旦我有了这个数字,我就会在MainWindow的布局中显示它,并且该图看起来像这样:
哪个好看,一切都好。
问题在于,在显示之前,我对fig.savefig('EvolLine.png')
保存的数字看起来不同。然后,当我尝试在PDF文件中使用此保存的图形时,它看起来不太好。
这是保存的数字:
此外,如果我使用图中工具栏中的工具手动保存图形,则保存的图形会再次显示。
我不知道为什么如果我保存图形"以编程方式"看起来很糟糕,就像压缩一样。
那么我怎么能以编程方式保存图形并使其看起来像在显示器中?
修改
如果有帮助,这就是我要保存和绘制的过程:
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')
答案 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')