代码之家  ›  专栏  ›  技术社区  ›  quickbug

Matplotlib:如何将绘图保存在pdf文件[副本]

  •  0
  • quickbug  · 技术社区  · 7 年前

    这个问题的各种变体已经得到了回答,但没有一个答案是在我的情况下工作。我能得到的最好的是一张空的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())
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Piotrek    7 年前

    删除 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')
    
        2
  •  0
  •   user3376851    7 年前

    这对我有用

    saveas(gcf,'myfigure.pdf')