एक पीडीएफ में भूखंडों को बचाओ


91

प्लॉटिंग मॉड्यूल

def plotGraph(X,Y):
    fignum = random.randint(0,sys.maxint)
    plt.figure(fignum)
    ### Plotting arrangements ###
    return fignum

मुख्य मॉड्यूल

import matplotlib.pyplot as plt
### tempDLStats, tempDLlabels are the argument
plot1 = plotGraph(tempDLstats, tempDLlabels)
plot2 = plotGraph(tempDLstats_1, tempDLlabels_1)
plot3 = plotGraph(tempDLstats_2, tempDLlabels_2)
plt.show()

मैं सभी रेखांकन प्लॉट 1, प्लॉट 2, प्लॉट 3 को एक सिंगल पीडीएफ फाइल में सेव करना चाहता हूं। क्या इसे हासिल करने का कोई तरीका है? मैं plotGraphफ़ंक्शन को मुख्य मॉड्यूल में शामिल नहीं कर सकता ।

वहाँ एक फ़ंक्शन नाम दिया गया है, pylab.savefigलेकिन यह प्लॉटिंग मॉड्यूल के साथ रखे जाने पर ही काम करता है। क्या इसे पूरा करने का कोई और तरीका है?

जवाबों:


209

अगर कोई व्यक्ति Google से यहां समाप्त होता है, तो एक एकल आकृति को .pdf में बदलना (जो मैं ढूंढ रहा था):

import matplotlib.pyplot as plt

f = plt.figure()
plt.plot(range(10), range(10), "o")
plt.show()

f.savefig("foo.pdf", bbox_inches='tight')

1
आप पृष्ठ का आकार pdf में कैसे सेट करते हैं?
wherestheforce 18:11

2
@wherestheforce मुझे यकीन नहीं है कि आप pdf के पेजेज़ को सीधे सेट कर सकते हैं लेकिन आप आंकड़ा आकार बदल सकते हैं: f = plt.figure (figsize = (5, 10)) उदाहरण के लिए, पीडीएफ अनुपात को बदलने के लिए।
क्लेमेंट टी।

119

एक ही पीडीएफ फाइल में कई प्लॉट्स के लिए आप PdfPages का उपयोग कर सकते हैं

में plotGraphसमारोह आप आंकड़ा और कॉल की तुलना में लौटना चाहिए savefigआंकड़ा वस्तु की।

------ प्लॉटिंग मॉड्यूल ------

def plotGraph(X,Y):
      fig = plt.figure()
      ### Plotting arrangements ###
      return fig

------ प्लॉटिंग मॉड्यूल ------

----- मेनमॉडल ----

from matplotlib.backends.backend_pdf import PdfPages

plot1 = plotGraph(tempDLstats, tempDLlabels)
plot2 = plotGraph(tempDLstats_1, tempDLlabels_1)
plot3 = plotGraph(tempDLstats_2, tempDLlabels_2)

pp = PdfPages('foo.pdf')
pp.savefig(plot1)
pp.savefig(plot2)
pp.savefig(plot3)
pp.close()

3
"प्लॉटिंग अरेंजमेंट्स" यह समझाने के लिए एक उदाहरण है कि वास्तव में प्लॉट को आंकड़ों में कैसे जोड़ा जाए!
user2127595 21

1
@ user2127595 यह मेरे लिए काम करता है: def प्लॉट_graph (x, y1, y2): fig = plt.figure () axes1 = fig.add_subplot (2, 1, 1) ax22 = fig.add_subplot (2, 1, 2) axes1। प्लॉट (x, y1) axes2.plot (x, y2) रिटर्न अंजीर
डीनएम

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

# Create the PdfPages object to which we will save the pages:
# The with statement makes sure that the PdfPages object is closed properly at
# the end of the block, even if an Exception occurs.
with PdfPages('multipage_pdf.pdf') as pdf:
    plt.figure(figsize=(3, 3))
    plt.plot(range(7), [3, 1, 4, 1, 5, 9, 2], 'r-o')
    plt.title('Page One')
    pdf.savefig()  # saves the current figure into a pdf page
    plt.close()

    plt.rc('text', usetex=True)
    plt.figure(figsize=(8, 6))
    x = np.arange(0, 5, 0.1)
    plt.plot(x, np.sin(x), 'b-')
    plt.title('Page Two')
    pdf.savefig()
    plt.close()

    plt.rc('text', usetex=False)
    fig = plt.figure(figsize=(4, 5))
    plt.plot(x, x*x, 'ko')
    plt.title('Page Three')
    pdf.savefig(fig)  # or you can pass a Figure object to pdf.savefig
    plt.close()

    # We can also set the file's metadata via the PdfPages object:
    d = pdf.infodict()
    d['Title'] = 'Multipage PDF Example'
    d['Author'] = u'Jouni K. Sepp\xe4nen'
    d['Subject'] = 'How to create a multipage pdf file and set its metadata'
    d['Keywords'] = 'PdfPages multipage keywords author title subject'
    d['CreationDate'] = datetime.datetime(2009, 11, 13)
    d['ModDate'] = datetime.datetime.today()

3
अगर आप plt.show()इसे लगाने के बाद इस्तेमाल कर रहे हैं pdf.savefig()
केर से आयात माइकल

-24

कभी मन को ऐसा करने का तरीका नहीं मिला।

def plotGraph(X,Y):
     fignum = random.randint(0,sys.maxint)
     fig = plt.figure(fignum)
     ### Plotting arrangements ###
     return fig

------ प्लॉटिंग मॉड्यूल ------

----- मेनमॉडल ----

 import matplotlib.pyplot as plt
 ### tempDLStats, tempDLlabels are the argument
 plot1 = plotGraph(tempDLstats, tempDLlabels)
 plot2 = plotGraph(tempDLstats_1, tempDLlabels_1)
 plot3 = plotGraph(tempDLstats_2, tempDLlabels_2)
 plt.show()
 plot1.savefig('plot1.png')
 plot2.savefig('plot2.png')
 plot3.savefig('plot3.png')

----- मेनमॉडल -----


19
रुको, मैंने सोचा कि आप एक पीडीएफ फाइल में भूखंडों को बचाना चाहते थे। आपका समाधान छवियों को तीन अलग-अलग पीएनजी फाइलों में बचाता है, जो एक अलग प्रश्न के उत्तर की तरह लगता है।
DSM

2
बहुत खेद है। मैं फ़ाइल को किसी तरह सहेजने पर ज्यादा जोर दे रहा था। मैं बैकएंड पीडीएफ चीज के बारे में जानता था..लेकिन अपने काम पर लग गया और इसे जोड़ने की उपेक्षा की। वैसे भी, इसे इंगित करने के लिए धन्यवाद।
VoodooChild92

5
डाउनवोट्स की संख्या देखकर, आप अन्य उत्तरों के लिए "कमरा" छोड़ने के लिए इस उत्तर को हटाने के बारे में सोच सकते हैं।
पैट्रिक टीटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.