আপনি কীভাবে ম্যাটপ্ল্লিটিব দিয়ে অঙ্কিত চিত্রের আকার পরিবর্তন করবেন?


2031

আপনি কীভাবে ম্যাটপ্ল্লিটিব দিয়ে অঙ্কিত চিত্রের আকার পরিবর্তন করবেন?


739
plt.figure(figsize=(20,10))
স্ট্যাকজি

304
বাfig, ax = plt.subplots(figsize=(20, 10))
অ্যালেক্স

99
চিত্রের আকার পিক্সেলে রয়েছে এই ভেবে, আমি নির্দিষ্ট করেছি (800,600) এবং প্রোগ্রামটি ক্র্যাশ হয়ে গেছে! ইউনিটটি ইঞ্চি বলে মনে রাখবেন।
রাজা

2
@alexw এটি কি ডকুমেন্টেশনে আছে?
লিয়াং

48
fig = plt.gcf()-> fig.set_size_inches(11,8)একবার এবং সবসময় বিভ্রান্তি এড়াতে।
ইউফোস

উত্তর:


1099

চিত্র আপনাকে কল স্বাক্ষর জানায়:

from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

figure(figsize=(1,1)) একটি ইঞ্চি বাই ইঞ্চি চিত্র তৈরি করবে যা আপনি বাই ডিপিআই যুক্তি না দিলে 80-বাই-80 পিক্সেল হবে।


95
যদি আপনি ইতিমধ্যে চিত্রটি তৈরি করে ফেলেছেন তবে বলুন এটি 'ফিগার 1' (যখন আপনি পাইপলট ব্যবহার করছেন তখন এটি পূর্বনির্ধারিত), আপনি চিত্রটি ব্যবহার করতে পারেন (সংখ্যা = 1, ডুমুরের আকার = (8, 6), ...) এর আকার পরিবর্তন করা ইত্যাদি। যদি আপনি পাইপলট / পাইলব ব্যবহার করে থাকেন এবং show()একটি পপআপ উইন্ডো তৈরি করতে চান figure(num=1,...) তবে আপনাকে কোনও প্লট করার আগে আপনাকে কল করতে হবে - পাইপ্লট / পাইলব কিছু আঁকামাত্রই একটি চিত্র তৈরি করে, এবং পপআপটির আকার প্রদর্শিত হবে এই মুহূর্তে স্থির করা।
ড্রিভিকো

22
আমি মনে করি আপনার ডিফল্ট যুক্তিগুলি সরিয়ে ফেললে আপনার উত্তরটি আরও ভাল। এটি অকারণে শব্দ অনুপাতের সংকেত হ্রাস করে।
frmsaul

3
এর অর্থ কি যদি আপনি ডিপিআই 1 তে সেট করেন, তবে ডুমুর আকারটি ইঞ্চি ইউনিটের পরিবর্তে পিক্সেল ইউনিটে পরিণত হয়? ওয়েবে এবং জিইউআই ইন্টারফেসে ম্যাটপ্লটলিব ব্যবহার করার সময় এটি আরও কার্যকর হবে।
সিএমসিডিগ্রাগনকাই

1
ডুমুরের আকার (1,1) দিয়ে আপনার চিত্রটিতে 1: 1 হিসাবে অনুপাত থাকবে? কারণ আমার সমস্ত পাই চার্টগুলি ওভাল প্রদর্শন করা হয় এবং আমি তাদের গোলাকার করার একমাত্র উপায় ছিল প্লট.এক্সিস ("সমান") ব্যবহার করে। তাদের একই প্রভাব ফেলবে নাকি তারা দ্বৈতভাবে আচরণ করবে?
Breno Baiardi

2
এই প্রশ্নটি চিত্রের আকার সম্পর্কে। সামগ্রিকভাবে চিত্রটি 1: 1 এবং এমনকি অক্ষ বাক্স 1: 1 হলেও এমনকি চিত্রের শীর্ষের অক্ষগুলিতে একটি অসম দিক অনুপাত থাকতে পারে x সুতরাং, না, কমান্ডটি সমান অনুপাতের অনুপাতের নিশ্চয়তা দেয় না।
জৌনি কে। সেপ্পেনেন

741

যদি আপনি ইতিমধ্যে চিত্রটি তৈরি করে ফেলেছেন তবে আপনি দ্রুত এটি করতে পারেন:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

বিদ্যমান গুই উইন্ডোতে আকার পরিবর্তন পরিবর্তনের জন্য ate forward=True

fig.set_size_inches(18.5, 10.5, forward=True)

3
আমাকে একটি সমস্যার সমাধান করে imshow, এখন আমি এই কোডটি ব্যবহার করে প্লট করার জায়গার চারপাশের স্থানটি সরিয়ে দেওয়ার পরে plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)
হেলটনবাইকার

7
একইভাবে, আপনি চালাতে পারেন fig.set_dpi(100)
এরিক শিল্টস

1
আমি এটি আইপিথন ৩.7, ম্যাটপ্ল্লোলিব ৩.০.৩ এর অধীনে ওএস এক্সে ব্যবহার করছি। আমি চিত্রের আকার সামঞ্জস্য করতে সক্ষম, তবে উইন্ডোটির আকার পরিবর্তন হয় না (চিত্র ক্যানভাস সামঞ্জস্য হয়, তবে ক্যানভাসটি সামঞ্জস্য করার জন্য উইন্ডোটি বৃদ্ধি বা সঙ্কুচিত হয় না)। ফরোয়ার্ড = সত্য কীওয়ার্ড আর্গুমেন্টের এই প্ল্যাটফর্মে উদ্দেশ্য প্রভাবিত হয় না।
কে। নীলসন

গুগল কোলাবোরেটরিতে আমার জন্য এই কাজ
carlosaar22

354

অসমর্থনের নোট:
অনুযায়ী সরকারী Matplotlib নির্দেশিকা , ব্যবহার pylabমডিউল আর বাঞ্ছনীয়। matplotlib.pyplotপরিবর্তে এই অন্যান্য উত্তর দ্বারা বর্ণিত হিসাবে, পরিবর্তে মডিউল ব্যবহার বিবেচনা করুন ।

নিম্নলিখিতটি কাজ করে বলে মনে হচ্ছে:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

এটি চিত্রটির প্রস্থ 5 ইঞ্চি এবং এর উচ্চতা 10 ইঞ্চি করে

চিত্র শ্রেণিটি এর পরে এটির একটি আর্গুমেন্টের জন্য এটি ডিফল্ট মান হিসাবে ব্যবহার করে।


3
এটি iPython নোটবুকের শীর্ষেও দুর্দান্তভাবে কাজ করে, যা ইতিমধ্যে শীর্ষ স্তরে আরসিপ্যারামগুলি আমদানি করেছে c
nealmcb

4
এটি আমার উইন্ডোজ মেশিনে ওও ইন্টারফেসের সাথে পাইপ্লট এবং কিউটি ব্যাকএন্ডে কাজ করে না। fig.set_size_inches(18.5, 10.5, forward=True)কাজ করছে.
বেনেট ব্রাউন

2
এই উত্তরটি বর্তমানে আলোচনা করা হয় মেটা
Mischa

পাইথন সংস্করণটির জন্য: ৩.6.৪, ম্যাটপ্ল্লোব: ২.২.৩ আমার মনে হয় আপনার একটি তালিকা পাস করতে হবে বা টুপল যেমন rcParams ['চিত্র.ফাগিজাইজ'] = (5, 10)
স্টিভ গন

2
কেউ জানেন যে কেন প্রথমবার সেল চালানো হচ্ছে না?
g07kore

314

Plt.rcParams ব্যবহার করা হচ্ছে

আপনি যদি চিত্রের পরিবেশ ব্যবহার না করে আকার পরিবর্তন করতে চান তবে এই কর্মপরিকল্পনাও রয়েছে। আপনি যদি plt.plot()উদাহরণস্বরূপ ব্যবহার করছেন তবে আপনি প্রস্থ এবং উচ্চতা সহ একটি টিপল সেট করতে পারেন।

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

আপনি যখন ইনলাইন প্লট করবেন (যেমন আইপিথন নোটবুক সহ) এটি খুব দরকারী। যেহেতু @ আসামায়ার লক্ষ্য করেছেন যে এই বিবৃতিটি আমদানির বিবৃতিগুলির একই কক্ষে না রাখাই ভাল।

সেমি থেকে রূপান্তর

figsizeTuple ইঞ্চি গ্রহণ যাতে আপনি সেন্টিমিটার আপনি তাদের 2,54 দ্বারা বিভক্ত করা আছে এটি সেট করতে চান তাহলে একটি চেহারা আছে এই প্রশ্নের


4
অসাধারণ! এটি একবারে সেট করা এবং একাধিকবার চক্রান্ত করার জন্যও দরকারী।
অটোমোরফিক

কোনও কারণে, মনে হয় এটি বৃহত্তর নোটবুকে আর কাজ করে না (তবে অভ্যস্ত ছিল)।
রায়

@ রে আপনি কি আপনার জুপিটার নোটবুকের সংস্করণ এবং আমার জন্য এটি ব্যবহার করে আচরণের সংস্করণটি লিখতে পারেন
GM

@ জিএম শেষবার যখন আমি পরীক্ষা করে দেখলাম, এটি উইন্ডোজ 10 এবং গুগল ক্রোমে ac৩.০.৩৩৩৯.৮৪ এ অ্যানাকোন্ডার জপিটার সংস্করণ ৪.৩.০ এবং পাইথন ৩. 3..২ ছিল।
রায়

8
এটি কাজ করতে আমাকে plt.rcParams["figure.figsize"] = (20,3)একটি অতিরিক্ত কক্ষে কল করতে হবে । আমি যখন এটিকে আমদানির বিবৃতি হিসাবে একই কক্ষে বলি, তখন তা উপেক্ষা হয়ে যায়।
asmaier

269

নিম্নলিখিত হিসাবে একটি সহজ কোড চেষ্টা করুন:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

প্লট করার আগে আপনাকে চিত্রের আকার নির্ধারণ করতে হবে।


14
এই উত্তরটি আমাকে বলে যে এটি মি atplotlib.pyplot.figure, যা অন্যরা পরিষ্কারভাবে বলে না। আমি matplotlib.figureএবংmatplotlib.figure.Figure
লিন্ডন হোয়াইট

"_tkinter.TclError: চিত্র বাফারের জন্য পর্যাপ্ত ফ্রি মেমরি নেই"
সেরিন

5
plt.figure(figsize=(1,1))কর্কস পদক্ষেপ। ধন্যবাদ.
ximiki

জুপিটার নোটবুকে, এটি আমার জন্য কাজ করেছে: plt.figure (ডুমুর আকার = (20,10))
অভিষেক

জুপিটার নোটবুক ব্যবহারকারীদের জন্য, দয়া করে নিশ্চিত হয়ে নিন যে আপনি অন্যান্য প্লট কমান্ডের আগে plt.figure (ডুমুর আকার = (15, 10)) ব্যবহার করছেন।
যুহং লিন

89

আপনি যদি পান্ডায় চিত্রের আকার পরিবর্তন করার কোনও উপায় সন্ধান করছেন তবে আপনি উদাহরণস্বরূপ করতে পারেন:

df['some_column'].plot(figsize=(10, 5))

যেখানে dfএকটি পান্ডাস ডেটা ফ্রেম। অথবা, বিদ্যমান চিত্র বা অক্ষ ব্যবহার করতে

fig, ax = plt.subplots(figsize=(10,5))
df['some_column'].plot(ax=ax)

আপনি যদি ডিফল্ট সেটিংস পরিবর্তন করতে চান তবে আপনি নিম্নলিখিতগুলি করতে পারেন:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))

73

গুগলের প্রথম লিঙ্কটি 'matplotlib figure size'হ'ল অ্যাডজাস্টিংআইজেজ সাইজ ( পৃষ্ঠার গুগল ক্যাশে )।

উপরের পৃষ্ঠাটি থেকে এখানে একটি পরীক্ষার স্ক্রিপ্ট রয়েছে। এটি test[1-3].pngএকই চিত্রের বিভিন্ন আকারের ফাইল তৈরি করে:

#!/usr/bin/env python
"""
This is a small demo file that helps teach how to adjust figure sizes
for matplotlib

"""

import matplotlib
print "using MPL version:", matplotlib.__version__
matplotlib.use("WXAgg") # do this before pylab so you don'tget the default back end.

import pylab
import numpy as np

# Generate and plot some simple data:
x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)

pylab.plot(x,y)
F = pylab.gcf()

# Now check everything with the defaults:
DPI = F.get_dpi()
print "DPI:", DPI
DefaultSize = F.get_size_inches()
print "Default size in Inches", DefaultSize
print "Which should result in a %i x %i Image"%(DPI*DefaultSize[0], DPI*DefaultSize[1])
# the default is 100dpi for savefig:
F.savefig("test1.png")
# this gives me a 797 x 566 pixel image, which is about 100 DPI

# Now make the image twice as big, while keeping the fonts and all the
# same size
F.set_size_inches( (DefaultSize[0]*2, DefaultSize[1]*2) )
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test2.png")
# this results in a 1595x1132 image

# Now make the image twice as big, making all the fonts and lines
# bigger too.

F.set_size_inches( DefaultSize )# resetthe size
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test3.png", dpi = (200)) # change the dpi
# this also results in a 1595x1132 image, but the fonts are larger.

আউটপুট:

using MPL version: 0.98.1
DPI: 80
Default size in Inches [ 8.  6.]
Which should result in a 640 x 480 Image
Size in Inches [ 16.  12.]
Size in Inches [ 16.  12.]

দুটি নোট:

  1. মডিউল মন্তব্য এবং প্রকৃত আউটপুট পৃথক।

  2. এই উত্তরটি আকারের পার্থক্য দেখতে সহজেই একটি চিত্র ফাইলে তিনটি চিত্রকে একত্রিত করতে দেয়।


7
প্রতিবার আমি কীভাবে এটি করব তা প্রত্যাহার করার চেষ্টা করছি আমি এই পোস্টে শেষ করি। সুতরাং, এই কোডটি আমি সাধারণত খুঁজছি:fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) )
y.selivonchyk

45

আপনি কেবল ব্যবহার করতে পারেন ( matplotlib.figure.Figure থেকে ):

fig.set_size_inches(width,height)

ম্যাটপ্লটলিব ২.০.০ হিসাবে, forwardকীওয়ার্ডের ডিফল্টTrue হিসাবে আপনার ক্যানভাসে পরিবর্তনগুলি তত্ক্ষণাত দৃশ্যমান হবে ।

আপনি যদি উভয়ের পরিবর্তে প্রস্থ বা উচ্চতা পরিবর্তন করতে চান তবে আপনি ব্যবহার করতে পারেন

fig.set_figwidth(val) অথবা fig.set_figheight(val)

এগুলি আপনার ক্যানভাসগুলি তাত্ক্ষণিকভাবে আপডেট করবে তবে কেবল ম্যাটপ্ল্লিটিব ২.২.০ এবং আরও নতুন।

পুরানো সংস্করণ জন্য

forward=Trueউপরে বর্ণিত সংস্করণগুলির চেয়ে পুরানো সংস্করণগুলিতে আপনার ক্যানভাসটি লাইভ-আপডেট করার জন্য আপনাকে স্পষ্টভাবে নির্দিষ্ট করতে হবে । মনে রাখবেন যে set_figwidthএবং set_figheightফাংশনগুলি forwardম্যাটপ্ল্লিটিব 1.5.0 এর চেয়ে পুরানো সংস্করণগুলিতে পরামিতি সমর্থন করে না ।


45
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))
plt.plot(x,y) ## This is your plot
plt.show()

আপনি এটি ব্যবহার করতে পারেন:

fig, ax = plt.subplots(figsize=(20, 10))

31

fig = ...লাইনটি মন্তব্য করার চেষ্টা করুন

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2

fig = plt.figure(figsize=(18, 18))
plt.scatter(x, y, s=area, alpha=0.5)
plt.show()

21

এটি আমার পক্ষে ভাল কাজ করে:

from matplotlib import pyplot as plt

F = plt.gcf()
Size = F.get_size_inches()
F.set_size_inches(Size[0]*2, Size[1]*2, forward=True) # Set forward to True to resize window along with plot in figure.
plt.show() # or plt.imshow(z_array) if using an animation, where z_array is a matrix or numpy array

এটি এছাড়াও সহায়তা করতে পারে: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html


16

আপনার চিত্রের N বারের আকার বাড়াতে আপনার pl.show () এর ঠিক আগে এটি sertোকানো দরকার:

N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )

এটি আইপথন নোটবুকের সাথেও ভাল কাজ করে।


10

যেহেতু Matplotlib সক্ষম নয় এমন সেন্টিমিটার যেমন নেটিভ মেট্রিক পদ্ধতি ব্যবহার করতে, যদি আপনি দৈর্ঘ্যের একটি যুক্তিসঙ্গত ইউনিটে আপনার চিত্র মাপ নির্দিষ্ট করতে চান, আপনি নিম্নলিখিত (থেকে কোড কি করতে পারেন gns-ANK ):

def cm2inch(*tupl):
    inch = 2.54
    if isinstance(tupl[0], tuple):
        return tuple(i/inch for i in tupl[0])
    else:
        return tuple(i/inch for i in tupl)

তারপরে আপনি ব্যবহার করতে পারেন:

plt.figure(figsize=cm2inch(21, 29.7))

8

চিত্রটি আঁকার পরেও এই চিত্রটিকে পুনরায় আকার দেয় (কমপক্ষে কিউটি 4 এগ্রি / টোএজিজি ব্যবহার করুন - তবে ম্যাকোএসএক্স নয় - ম্যাটপ্লোটিব 1.4.0 সহ):

matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)

7

সিসিহোডেলিয়ার উত্তরটি সাধারণীকরণ এবং সরলকরণ। আপনি যদি কোনও ফ্যাক্টর দ্বারা চিত্রের বর্তমান আকার পরিবর্তন করতে চানsizefactor

import matplotlib.pyplot as plt

# here goes your code

fig_size = plt.gcf().get_size_inches() #Get current size
sizefactor = 0.8 #Set a zoom factor
# Modify the current size by the factor
plt.gcf().set_size_inches(sizefactor * fig_size) 

বর্তমান আকার পরিবর্তন করার পরে, এটি ঘটতে পারে যে আপনাকে সাবপ্লট লেআউট টিউন করতে হবে । আপনি ফিগার উইন্ডোতে এটি করতে পারেন জিইউআই, অথবা কমান্ডের মাধ্যমে সাবপ্লটস_ডজাস্ট করুন

উদাহরণ স্বরূপ,

plt.subplots_adjust(left=0.16, bottom=0.19, top=0.82)

5

আর একটি বিকল্প, ম্যাটপ্ল্লোলিব (ইউনিটটি ইঞ্চি) -এ আরসি () ফাংশনটি ব্যবহার করার জন্য

import matplotlib
matplotlib.rc('figure', figsize=[10,5])

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.