我想使用PdfPages将在脚本不同部分创建的2个数字保存到PDF中,是否可以将它们附加到pdf中?
示例:
fig = plt.figure()
ax = fig_zoom.add_subplot(111)
ax.plot(range(10), range(10), 'b')
with PdfPages(pdffilepath) as pdf:
pdf.savefig(fig)
fig1 = plt.figure()
ax = fig_zoom.add_subplot(111)
ax.plot(range(10), range(2, 12), 'r')
with PdfPages(pdffilepath) as pdf:
pdf.savefig(fig1)
答案 0 :(得分:6)
对不起,这是个蹩脚的问题。我们不应该使用with
语句。
fig = plt.figure()
ax = fig_zoom.add_subplot(111)
ax.plot(range(10), range(10), 'b')
# create a PdfPages object
pdf = PdfPages(pdffilepath)
# save plot using savefig() method of pdf object
pdf.savefig(fig)
fig1 = plt.figure()
ax = fig_zoom.add_subplot(111)
ax.plot(range(10), range(2, 12), 'r')
pdf.savefig(fig1)
# remember to close the object to ensure writing multiple plots
pdf.close()
答案 1 :(得分:3)
如果文件已经关闭,则不会附加这些选项(例如,文件是在程序的一次执行中创建的,并且您再次运行程序)。在该用例中,它们都覆盖了该文件。
我认为目前不支持追加。查看backend_pdf.py
的代码,我看到了:
class PdfFile(object)
...
def __init__(self, filename):
...
fh = open(filename, 'wb')
因此,该功能始终是写作,永不附加。
答案 2 :(得分:2)
我认为Prashanth's answer可以更好地推广,例如将其合并到for循环中,并避免创建多个数字,can generate memory leaks。
$request->all()
答案 3 :(得分:0)
如果您的数据在数据框中,您可以直接这样做
#
with PdfPages(r"C:\Users\ddadi\Documents\multipage_pdf1.pdf","a") as pdf:
#insert first image
dataframe1.plot(kind='barh'); plt.axhline(0, color='k')
plt.title("first page")
pdf.savefig()
plt.close()
#insert second image
dataframe2.plot(kind='barh'); plt.axhline(0, color='k')
plt.title("second page")
pdf.savefig()
plt.close()
答案 4 :(得分:0)
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
使用plt绘制任何想要的内容
pp = PdfPages('multipage.pdf')
plt.savefig(pp, format='pdf')
pp.savefig()
最后,在插入所有页面之后,必须关闭多页面pdf对象。
pp.close()