为什么没有图片显示

时间:2017-01-20 17:51:41

标签: python canvas matplotlib

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

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

我使用FigureCanvasQTAgg和matplotlib.figure而不是使用matplotlib.pyplot的原因是,Figure对象也允许我做类似的事情

with PdfPages(...) as pdf_writer:
    canvas = FigureCanvasPDF(fig1)
    pdf_writer.savefig(fig1)
    pdf_writer.savefig(fig1)

在单个pdf文件中写出同一个数字的两个副本。它还允许我在同一个PDF中写入多个数字。我不知道我们只能使用matplotlib.pyplot

来做到这一点

1 个答案:

答案 0 :(得分:2)

在matplotlib中显示图形的最简单和最好的方法是使用pyplot接口:

import matplotlib.pyplot as plt
fig1= plt.figure()
plt.show()

要以pdf文件的形式创建输出,请使用:

import matplotlib.pyplot as plt
fig1= plt.figure()
plt.savefig("filename.pdf")

如果要将多个数字保存到同一个pdf文件,请使用matplotlib.backends.backend_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)

如何保存从同一功能创建的多个数字的完整示例将是

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)

FigureCanvasQTAgg用于PyQt GUI,如果你想使用它,你需要先创建它。 This question向您展示了如何做到这一点,但仅仅显示或保存数字似乎有点过分。