आप matplotlib के साथ आरेखित आकृति का आकार कैसे बदलते हैं?
fig, ax = plt.subplots(figsize=(20, 10))
fig = plt.gcf()
-> fig.set_size_inches(11,8)
एक बार और सभी के लिए भ्रम से बचने के लिए।
आप matplotlib के साथ आरेखित आकृति का आकार कैसे बदलते हैं?
fig, ax = plt.subplots(figsize=(20, 10))
fig = plt.gcf()
-> fig.set_size_inches(11,8)
एक बार और सभी के लिए भ्रम से बचने के लिए।
जवाबों:
आंकड़ा आपको कॉल हस्ताक्षर बताता है:
from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')
figure(figsize=(1,1))
इंच-दर-इंच छवि बनाएगा, जो कि 80-बाय -80 पिक्सेल होगा जब तक कि आप एक अलग डीपीआई तर्क भी न दें।
show()
पॉपअप विंडो बनाने के लिए, आपको कुछ भी प्लॉट करने figure(num=1,...)
से पहले कॉल करने की आवश्यकता है - जैसे ही आप कुछ आकर्षित करते हैं तो पाइलपॉट / पाइलैब एक आकृति बनाता है, और पॉपअप का आकार प्रकट होता है। इस बिंदु पर तय किया जाना है।
यदि आप पहले से ही बना लिया है आंकड़ा आप जल्दी से यह कर सकते हैं:
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)
मौजूदा गुई विंडो ऐड में आकार परिवर्तन का प्रचार करने के लिए forward=True
fig.set_size_inches(18.5, 10.5, forward=True)
imshow
, अब मैं इस कोड का उपयोग कर रहा हूँ के साथ साजिश रचने वाले क्षेत्र के आसपास की जगह को खत्म करने के बाद plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)
।
fig.set_dpi(100)
।
विरोध का ध्यान दें:
के अनुसार सरकारी matplotlib गाइड , के उपयोगpylab
मॉड्यूल नहीं रह गया है की सिफारिश की है। कृपयाmatplotlib.pyplot
इसके बजाय मॉड्यूल का उपयोग करने पर विचार करें , जैसा कि इस अन्य उत्तर द्वारा वर्णित है ।
निम्नलिखित काम करने लगता है:
from pylab import rcParams
rcParams['figure.figsize'] = 5, 10
यह आंकड़ा की चौड़ाई 5 इंच, और इसकी ऊंचाई 10 इंच बनाता है ।
चित्रा वर्ग तब इसके एक तर्क के लिए डिफ़ॉल्ट मान के रूप में उपयोग करता है।
fig.set_size_inches(18.5, 10.5, forward=True)
काम किया।
यदि आप आंकड़ा वातावरण का उपयोग किए बिना आकार बदलना चाहते हैं, तो यह वर्कअराउंड भी है। इसलिए यदि आप plt.plot()
उदाहरण के लिए उपयोग कर रहे हैं , तो आप चौड़ाई और ऊंचाई के साथ एक टपल सेट कर सकते हैं।
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)
जब आप इनलाइन साजिश करते हैं (जैसे IPython नोटबुक के साथ) तो यह बहुत उपयोगी है। जैसा कि @asamaier ने देखा है कि इस कथन को आयात विवरणों के एक ही सेल में नहीं रखना बेहतर है।
figsize
टपल इंच स्वीकार करता है ताकि आप सेंटीमीटर आप उन्हें 2.54 से विभाजित करने के लिए है में यह सेट करना चाहते हैं के लिए एक नजर है इस सवाल का ।
plt.rcParams["figure.figsize"] = (20,3)
एक अतिरिक्त सेल में कॉल करना होगा । जब मैं इसे उसी सेल में आयात विवरण के रूप में कहता हूं, तो इसे अनदेखा कर दिया जाता है।
कृपया निम्नलिखित के रूप में एक सरल कोड आज़माएं:
from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()
आपको प्लॉट करने से पहले फिगर साइज सेट करना होगा।
atplotlib.pyplot.figure
, जिसे अन्य स्पष्ट रूप से नहीं कहते हैं। मैं कोशिश कर रहा हूँ जैसे matplotlib.figure
औरmatplotlib.figure.Figure
plt.figure(figsize=(1,1))
क्रूर कदम है। धन्यवाद।
यदि आप पंडों में आकृति का आकार बदलने के लिए रास्ता खोज रहे हैं , तो आप ऐसा कर सकते हैं:
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))
के लिए गूगल में पहली कड़ी 'matplotlib figure size'
है AdjustingImageSize ( पेज के गूगल कैश )।
यहाँ उपरोक्त पृष्ठ से एक परीक्षण स्क्रिप्ट है। यह 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.]
दो नोट:
मॉड्यूल टिप्पणियां और वास्तविक आउटपुट अलग हैं।
यह उत्तर आसानी से आकारों में अंतर देखने के लिए एक छवि फ़ाइल में सभी तीन छवियों को संयोजित करने की अनुमति देता है।
fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) )
आप बस ( matplotlib.figure.Figure से ) का उपयोग कर सकते हैं :
fig.set_size_inches(width,height)
Matplotlib 2.0.0 के अनुसार, आपके कैनवास में परिवर्तन तुरंत दिखाई देगा, जैसा कि forward
कीवर्ड डिफॉल्ट करता हैTrue
।
यदि आप दोनों के बजाय केवल चौड़ाई या ऊँचाई बदलना चाहते हैं , तो आप उपयोग कर सकते हैं
fig.set_figwidth(val)
या fig.set_figheight(val)
ये तुरंत आपके कैनवास को भी अपडेट करेंगे, लेकिन केवल Matplotlib 2.2.0 और नए में।
आपको forward=True
अपने कैनवास को लाइव-अपडेट करने के लिए स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता है जो कि ऊपर निर्दिष्ट किए गए संस्करणों से अधिक है। ध्यान दें कि फ़ंक्शन set_figwidth
और set_figheight
फ़ंक्शंस forward
Matplotlib 1.5.0 से पुराने संस्करणों में पैरामीटर का समर्थन नहीं करते हैं ।
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))
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()
यह मेरे लिए अच्छा काम करता है:
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
अपने फिगर का आकार बढ़ाने के लिए N को आपके pl.show () से ठीक पहले डालने की जरूरत है:
N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )
यह ipython नोटबुक के साथ भी अच्छा काम करता है।
चूंकि Matplotlib मीट्रिक प्रणाली का उपयोग मूल रूप से करने में सक्षम नहीं है , यदि आप अपने आकार का आकार उचित इकाई जैसे कि सेंटीमीटर में निर्दिष्ट करना चाहते हैं, तो आप निम्नलिखित कर सकते हैं (कोड gns-ak से ):
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))
साइहोडेलिया के जवाब को सामान्य बनाना और सरल बनाना। यदि आप किसी कारक द्वारा आकृति का वर्तमान आकार बदलना चाहते हैं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)
एक अन्य विकल्प, matplotlib में आरसी () फ़ंक्शन का उपयोग करने के लिए (इकाई इंच है)
import matplotlib
matplotlib.rc('figure', figsize=[10,5])
आप सीधे आकृति का आकार बदलकर उपयोग करते हैं
plt.set_figsize(figure=(10, 10))
pyplot
नाम की कोई विधि नहीं है set_figsize
।
plt.figure(figsize=(20,10))