我目前有一些这样的代码:
text.replaceAll(System.lineSeparator(), "").indexOf(sentence);
假设是否要生成其中的5个图形,每个图形有4张图片。如何将它们保存到具有相同页面的pdf中。
在这里我已经阅读了一些有关如何保存数字的答案。例如,这个
Python saving multiple figures into one PDF file
但是,我不知道如何创建所需的图形。
答案 0 :(得分:1)
将您的代码和给定的链接结合起来,可以节省一个pdf(output.pdf)和5页,每页上都有一个数字:
import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages("output.pdf")
import numpy as np
import matplotlib.pyplot as plt
def generate_data():
return np.random.randint(10, size=10)
figs = []
n_figs = 5
for j in range(n_figs): # create all figures
plt.figure(j)
plt.suptitle("figure {}" .format(j+1))
for i in range(4):
plt.subplot(2, 2, i + 1)
plt.plot(generate_data())
for fig in range(0, plt.gcf().number + 1): # loop over all figures
pdf.savefig( fig ) # save each figure in the pdf
pdf.close()
编辑::评论后,这是试图在产生大量图形时使用较少内存的版本。这个想法是在创建每个图形后保存它们,然后将其关闭。
for j in range(n_figs): # create all figures
plt.figure(j)
plt.suptitle("figure {}" .format(j+1))
for i in range(4):
plt.subplot(2, 2, i + 1)
plt.plot(generate_data())
pdf.savefig(j) # save on the fly
plt.close() # close figure once saved
pdf.close()
EDIT2::这是第三个版本,我不确定哪个可以节省更多的内存。现在的想法是,无需创建和关闭许多图形,而仅创建,保存,清除并重复使用它。
plt.figure(1) # create figure outside loop
for j in range(n_figs): # create all figures
plt.suptitle("figure {}" .format(j+1))
for i in range(4):
plt.subplot(2, 2, i + 1)
plt.plot(generate_data())
pdf.savefig(1) # save on the fly
plt.clf() # clear figure once saved
pdf.close()
答案 1 :(得分:0)
喜欢这个。
fig, ax = plt.subplots(2, 2)
for i in range(5):
ax[i].plot(generate_data())
fig.savefig("C:\\test.pdf")