Matplotlib:如何将绘图保存在 pdf 文件中

qui*_*bug 9 python matplotlib

这个问题的各种变体已经得到了回答,但没有一个答案适用于我的情况。我能得到的最好的结果就是一个空的 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())
Run Code Online (Sandbox Code Playgroud)

小智 9

删除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')
Run Code Online (Sandbox Code Playgroud)

  • 感谢皮奥特里克。plt.show() 关闭图形并打开一个新图形。因此,我必须将 plt.show() 命令放在代码的最后(或者至少当我不再使用该图时) (2认同)