Python 为什么没有图片显示

Python 为什么没有图片显示,python,canvas,matplotlib,Python,Canvas,Matplotlib,我已经编写了返回matplotlib.figure对象的函数。我已经运行了上面的脚本。它已经崩溃了。我该怎么做 我使用FigureCanvasQTAgg和matplotlib.figure而不是matplotlib.pyplot的原因是figure对象还允许我执行以下操作 from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg if __name__ == "__main__": fig1 = ... pr

我已经编写了返回matplotlib.figure对象的函数。我已经运行了上面的脚本。它已经崩溃了。我该怎么做

我使用FigureCanvasQTAgg和matplotlib.figure而不是matplotlib.pyplot的原因是figure对象还允许我执行以下操作

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
if __name__ == "__main__":
    fig1 = ...
    print("start plotting")
    canvas = FigureCanvasQTAgg(fig1)
    canvas.draw()
    canvas.show()

在一个pdf文件中写出同一数字的两个副本。它还允许我在同一个PDF中写入多个数字。我不知道我们是否可以只使用matplotlib.pyplot来实现这一点。在matplotlib中显示图形的最简单、最好的方法是使用pyplot界面:

with PdfPages(...) as pdf_writer:
    canvas = FigureCanvasPDF(fig1)
    pdf_writer.savefig(fig1)
    pdf_writer.savefig(fig1)
要以pdf文件的形式创建输出,请使用:

import matplotlib.pyplot as plt
fig1= plt.figure()
plt.show()
如果要将多个图形保存到同一个pdf文件中,请使用
matplotlib.backends.backend\u pdf.PdfPages(“output.pdf”)

下面是如何保存从同一函数创建的多个图形的完整示例

import matplotlib.pyplot as plt
import matplotlib.backends.backend_pdf

fig1= plt.figure()
ax=fig1.add_subplot(111)

outfile = "output.pdf"
with matplotlib.backends.backend_pdf.PdfPages(outfile) as pdf_writer:
    pdf_writer.savefig(fig1)
    pdf_writer.savefig(fig1)

FigureCanvasQTAgg
用于PyQt GUI,如果您想使用它,需要首先创建PyQt GUI。向您展示了如何执行此操作,但仅显示或保存图形似乎有点过火。

不使用此功能的原因有很多,因为当代码不是以脚本形式运行时,我们希望将其写成PDF文件。使用Figure对象似乎更有意义。这完全无关。我编辑了关于如何创建pdf输出的答案。仅仅为了创建pdf文件而打开PyQt GUI甚至更荒谬。当然,您可以按照自己喜欢的任何方式创建图形,但是使用
FigureCanvasQTAgg
仅在您想要使用PyQt GUI时才有意义。但是使用plt不允许将多个倍数的图形保存到保存PDF中。关键是我们制作了多个绘图,并使用PdfPagesCan将它们放在同一个PDF中。我问你:这个问题在多大程度上反映了你真正想要做什么?在这个问题中,你想显示一个图形,现在结果是,你想保存它。在这个问题中,你有一个数字,现在你想要多个数字。你还想做什么你在问题中没有提到的事情?请编辑问题以反映您真正想要做的事情!但我可以向您保证,您不需要
FigureCanvasQTAgg
,所以请完全忽略这一点。好吧,我想让FigureCanvasQTAgg工作,这就是我想要的。我确实让它工作了,但我删除了一行未使用的导入,然后它又坏了。
import matplotlib.pyplot as plt
import matplotlib.backends.backend_pdf

fig1= plt.figure()
ax=fig1.add_subplot(111)

outfile = "output.pdf"
with matplotlib.backends.backend_pdf.PdfPages(outfile) as pdf_writer:
    pdf_writer.savefig(fig1)
    pdf_writer.savefig(fig1)
import matplotlib.pyplot as plt
import matplotlib.backends.backend_pdf

def plot(data):
    fig= plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(data)
    return fig

fig1 = plot([1,2,3])
fig2 = plot([9,8,7])

outfile = "output.pdf"
with matplotlib.backends.backend_pdf.PdfPages(outfile) as pdf_writer:
    pdf_writer.savefig(fig1)
    pdf_writer.savefig(fig2)