簡體   English   中英

Matplotlib保存到PDF的不同頁面

[英]Matplotlib savefig into different pages of a PDF

我有一個冗長的情節,由幾個水平子圖組成一個列組成。

當我調用fig.savefig('what.pdf')時,生成的輸出文件顯示所有填充到單個頁面上的圖。

問題:有沒有辦法告訴savefig保存任何數量(可能是自動確定的)pdf頁面?

如果可能的話,我寧願避免多個文件,然后是os.system('merge ...')。

我沒有嘗試過自己,但是在matplolib常見問題中,有一些指令可以在幾頁中保存pdf中的圖。

我懷疑有一種更優雅的方法可以做到這一點,但一種選擇是使用tempfiles或StringIO來避免在系統上制作傳統文件,然后你可以將它們拼湊在一起。

我想知道如何執行類似的事情。 我有來自不同圖像文件的設置圖,這些圖根據文件而有所不同。 所以我的想法是,一旦我找到了可以在頁面中繪制的大量繪圖,就可以將其應用於文件。 幸運的是,我在這里找到了一個解決方案: http ://blog.marmakoide.org/?p = 94。 但它無法正常工作,因為它只繪制第一個面板圖,其余面板留空。 我修改了它,在這里我包括一個(1XN)網格的工作版本和輸出圖。

import numpy

from matplotlib import pyplot as plot
from matplotlib.backends.backend_pdf import PdfPages

# Generate the data
data = numpy.random.randn(7, 1024)

# The PDF document
pdf_pages = PdfPages('histograms.pdf')

# Generate the pages
nb_plots = data.shape[0]
nb_plots_per_page = 5
nb_pages = int(numpy.ceil(nb_plots / float(nb_plots_per_page)))
grid_size = (nb_plots_per_page, 1)

for i, samples in enumerate(data):
  print
  print i,i % nb_plots_per_page,samples
  # Create a figure instance (ie. a new page) if needed
  if i % nb_plots_per_page == 0:
    print 'Opening'
    fig = plot.figure(figsize=(8.27, 11.69), dpi=100)
  # Close the page if needed
  elif (i + 1) % nb_plots_per_page == 0 or (i + 1) == nb_plots:
    plot.subplot2grid(grid_size, (i % nb_plots_per_page, 0))
    plot.hist(samples, 32, normed=1, facecolor='#808080', alpha=0.75)
    plot.title(str(i+1))

    plot.tight_layout()
    pdf_pages.savefig(fig)
    print 'Closing'
    print i,samples
    # Plot stuffs !
  print i,samples
  plot.subplot2grid(grid_size, (i % nb_plots_per_page, 0))
  plot.hist(samples, 32, normed=1, facecolor='#808080', alpha=0.75)
  plot.title(str(i+1))


# Write the PDF document to the disk
pdf_pages.close()
print 'histograms.pdf'

第1頁

第2頁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM