首页 > 解决方案 > Matplotlib:如何将绘图保存在 pdf 文件中

问题描述

已经回答了这个问题的各种变体,但在我的情况下没有一个答案有效。我能得到的最好的结果是一个空的 pdf 表,或者一个损坏的文件。

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
import numpy as np

def getdata():
    return np.random.uniform(0,1,10)

fig, axe = plt.subplots(5, 2)
row=[0,0,1,1,2,2,3,3,4,4]
col=[0,1,0,1,0,1,0,1,0,1]
for im in range(10):
    r=row[im]
    c=col[im]
    axe[r][c].scatter(getdata(), getdata())
plt.show()

# trial 1 -> generates a blank page
plt.savefig('figure1.pdf')

# trial 2 -> generates a corrupted pdf file
pdf=PdfPages('figure2.pdf')
pdf.savefig(plt.gcf())

标签: pythonmatplotlib

解决方案


删除plt.show(),因为它也清除了图形。

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

def getdata():
    return np.random.uniform(0,1,10)

fig, axe = plt.subplots(5, 2)
row=[0,0,1,1,2,2,3,3,4,4]
col=[0,1,0,1,0,1,0,1,0,1]
for im in range(10):
    r=row[im]
    c=col[im]
    axe[r][c].scatter(getdata(), getdata())

# trial 1 -> tried and it works, no need for trial 2
plt.savefig('figure1.pdf')

推荐阅读