gpt4 book ai didi

python - 保存的图形和显示的图形之间的差异

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:13 24 4
gpt4 key购买 nike

我正在使用 matplotlib 创建一个绘图。一旦我有了这个图,我就会在主窗口的布局中显示它,该图看起来像这样:

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')

最佳答案

您的问题是,当在程序中显示图形时,您正在控制纵横比,这意味着 x 刻度不会重叠。然而,在保存图形时,您允许 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

关于python - 保存的图形和显示的图形之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com