প্লটগুলি পিডিএফে সংরক্ষণ করুন


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

যদি কেউ এখানে গুগল থেকে শেষ হয় তবে একক চিত্রকে .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')

4
আপনি কিভাবে পিডিএফ এর পৃষ্ঠার আকার সেট করবেন?
যেখানে

4
@ কোথাও আমি নিশ্চিত নই যে আপনি সরাসরি পিডিএফের পৃষ্ঠাগুলি সেট করতে পারবেন তবে আপনি চিত্রের আকার পরিবর্তন করতে পারবেন: উদাহরণস্বরূপ, পিডিএফ অনুপাত পরিবর্তন করতে f = plt.figure (ডুমুর আকার = (5, 10))।
ক্লিমেন্ট টি।

119

একক পিডিএফ ফাইলে একাধিক প্লটের জন্য আপনি পিডিএফপেজ ব্যবহার করতে পারেন

ইন 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()

4
"প্লটিং অ্যারেঞ্জমেন্টস" কীভাবে চিত্রগুলিতে প্লট যুক্ত করতে হয় তা বোঝানোর জন্য একটি উদাহরণ দাবি করা যায়!
ব্যবহারকারী2127595

4
@ ব্যবহারকারী2127595 এটি আমার জন্য কাজ করে: ডিফ প্লট_গ্রাফ (x, y1, y2): ডুমুর = plt.figure () অক্ষ 1 = ডুমুর.এডিডি_সবপ্লট (2, 1, 1) অক্ষ 2 = ডুমুর.এডিডি_সবপ্লট (2, 1, 2) অক্ষ 1। প্লট (x, y1) axes2.plot (x, y2) ডুমুর ফিরিয়ে দিন
DeanM

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()

4
আপনি যদি ব্যবহার করেন তবে plt.show()এটি পরে রাখুন pdf.savefig()
কেরাস আমদানি করা মাইকেল থেকে

-23

কিছু করার উপায় কখনই পেল না।

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
অপেক্ষা করুন, আমি ভেবেছিলাম আপনি প্লটগুলি একটি একক পিডিএফ ফাইলে সংরক্ষণ করতে চান। আপনার সমাধান ইমেজগুলিকে তিনটি পৃথক পিএনজি ফাইলে সংরক্ষণ করে, যা মনে হয় অন্য প্রশ্নের উত্তরের মতো।
ডিএসএম

4
অত্যন্ত দুঃখিত. আমি কোনওভাবে ফাইলটি সংরক্ষণে আরও মনোনিবেশ করছিলাম। আমি ব্যাকএন্ড পিডিএফ জিনিস সম্পর্কে জানতাম..কিন্তু আমার কাজটি চালিয়ে গেল এবং এটিকে যুক্ত করা অবহেলা করে। যাইহোক, এটি নির্দেশ করার জন্য ধন্যবাদ।
ভুডোচিল্ড92

4
ডাউনভোটের সংখ্যা দেখে আপনি অন্য উত্তরগুলির জন্য "ঘর" ছেড়ে এই উত্তরটি মুছে ফেলার বিষয়ে ভাবতে পারেন।
প্যাট্রিকটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.