我正在尝试将已创建的任意数量的matplotlib图形保存到1个文件中(PDF?)。 有没有办法用一个命令来做?
答案 0 :(得分:17)
MatPlotLib目前支持saving multiple figures to a single pdf file。使用此功能的实现将是:
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt
def multipage(filename, figs=None, dpi=200):
pp = PdfPages(filename)
if figs is None:
figs = [plt.figure(n) for n in plt.get_fignums()]
for fig in figs:
fig.savefig(pp, format='pdf')
pp.close()
首先创建一些数字,
import matplotlib.pyplot as plt
import numpy as np
fig1 = plt.figure()
plt.plot(np.arange(10))
fig2 = plt.figure()
plt.plot(-np.arange(3, 50), 'r-')
默认情况下,multipage
会打印所有未结数字,
multipage('multipage.pdf')
这里唯一的 gotcha 是所有数字都呈现为矢量(pdf)图形。如果您希望图形使用光栅图形(即,如果文件太大而不是矢量),则在绘制具有多个点的数量时可以使用rasterized=True
选项。在这种情况下,我包含的dpi
选项可能很有用,例如:
fig3 = plt.figure()
plt.plot(np.random.randn(10000), 'g-', rasterized=True)
multipage('multipage_w_raster.pdf', [fig2, fig3], dpi=250)
在此示例中,我选择仅打印fig2
和fig3
。