Matplotlib ile çizilen figürün boyutunu nasıl değiştirirsiniz?
fig, ax = plt.subplots(figsize=(20, 10))
fig = plt.gcf()
-> fig.set_size_inches(11,8)
karışıklığı önlemek için bir kez ve herkes için.
Matplotlib ile çizilen figürün boyutunu nasıl değiştirirsiniz?
fig, ax = plt.subplots(figsize=(20, 10))
fig = plt.gcf()
-> fig.set_size_inches(11,8)
karışıklığı önlemek için bir kez ve herkes için.
Yanıtlar:
şekil size çağrı imzasını söyler:
from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')
figure(figsize=(1,1))
farklı bir dpi argümanı vermedikçe 80x80 piksel olacak inçlik bir görüntü oluşturur.
show()
bir pop-up penceresi oluşturmak için, bir şey çizmeden figure(num=1,...)
önce aramanız gerekir - pyplot / pylab bir şey çizer çizmez bir rakam oluşturur ve pop-up'ın boyutu görünür bu noktada sabitlenecek.
Oluşturduğunuz şekli zaten aldıysanız, bunu hızlı bir şekilde yapabilirsiniz:
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)
Boyut değişikliğini mevcut bir gui penceresine yaymak için forward=True
fig.set_size_inches(18.5, 10.5, forward=True)
imshow
, şimdi sadece çizim alanı çevresindeki alanı ortadan kaldırdıktan sonra bu kodu kullanıyorum plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)
.
fig.set_dpi(100)
.
Eskime not:
gereğince resmi Matplotlib rehber , kullanımpylab
modülü artık tavsiye edilir. Lütfenmatplotlib.pyplot
bunun yerine bu diğer cevapta açıklandığı gibi modülü kullanmayı düşünün .
Aşağıdaki gibi görünüyor:
from pylab import rcParams
rcParams['figure.figsize'] = 5, 10
Bu, şeklin genişliğini 5 inç ve yüksekliğini 10 inç yapar .
Figure sınıfı bunu bağımsız değişkenlerinden biri için varsayılan değer olarak kullanır.
fig.set_size_inches(18.5, 10.5, forward=True)
çalıştı.
Şekil ortamını kullanmadan boyutu değiştirmek istemeniz durumunda da bu geçici çözüm vardır. plt.plot()
Örneğin, kullanmanız durumunda , genişlik ve yükseklikte bir tuple ayarlayabilirsiniz.
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)
Bu, satır içi çizim yaparken çok kullanışlıdır (örneğin IPython Notebook ile). @Asamaier'in fark ettiği gibi, bu ifadeyi ithalat ifadelerinin aynı hücresine koymamak tercih edilir.
figsize
Eğer 2,54 bunları bölmek zorunda santimetre cinsinden ayarlamak isterseniz bir göz böylece tanımlama grubu inç kabul bu soruya .
plt.rcParams["figure.figsize"] = (20,3)
için fazladan bir hücreyi aramam gerekiyor . İçe aktarma ifadesiyle aynı hücrede çağırdığımda yoksayılır.
Lütfen aşağıdaki gibi basit bir kod deneyin:
from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()
Çizmeden önce şekil boyutunu ayarlamanız gerekir.
atplotlib.pyplot.figure
diğerlerinin açıkça söylemediği m olduğunu söylüyor. Gibi şeyler denemeye devam matplotlib.figure
vematplotlib.figure.Figure
plt.figure(figsize=(1,1))
en önemli hamle. Teşekkür ederim.
Pandalar'daki şekil boyutunu değiştirmenin bir yolunu arıyorsanız , şunları yapabilirsiniz:
df['some_column'].plot(figsize=(10, 5))
df
Pandalar veri çerçevesi nerede . Veya mevcut şekli veya eksenleri kullanmak için
fig, ax = plt.subplots(figsize=(10,5))
df['some_column'].plot(ax=ax)
Varsayılan ayarları değiştirmek isterseniz, aşağıdakileri yapabilirsiniz:
import matplotlib
matplotlib.rc('figure', figsize=(10, 5))
Google'da ilk halkası 'matplotlib figure size'
olan AdjustingImageSize ( sayfa Google önbellek ).
Yukarıdaki sayfadan bir test komut dosyası. test[1-3].png
Aynı görüntünün farklı boyutlarında dosyalar oluşturur :
#!/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.
Çıktı:
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.]
İki not:
Modül yorumları ve gerçek çıkış farklıdır.
Bu yanıt , boyutlardaki farkı görmek için üç görüntüyü tek bir görüntü dosyasında kolayca birleştirmenizi sağlar.
fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) )
Şunu kullanabilirsiniz ( matplotlib.figure.Figure öğesinden ):
fig.set_size_inches(width,height)
Matplotlib 2.0.0'dan itibaren, tuvalinizdeki değişiklikler forward
anahtar kelime varsayılanıTrue
olarak hemen görünür .
Her ikisi yerine genişliği veya yüksekliği değiştirmek isterseniz,
fig.set_figwidth(val)
veya fig.set_figheight(val)
Bunlar da tuvalinizi hemen güncelleyecektir, ancak sadece Matplotlib 2.2.0 ve daha yeni sürümlerde.
forward=True
Tuvalinizi yukarıda belirtilenden daha eski sürümlerde canlı güncellemek için açıkça belirtmeniz gerekir . Not set_figwidth
ve set_figheight
işlevleri desteklemez forward
Matplotlib 1.5.0 daha eski sürümlerinde parametre.
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))
plt.plot(x,y) ## This is your plot
plt.show()
Ayrıca kullanabilirsiniz:
fig, ax = plt.subplots(figsize=(20, 10))
Bu benim için iyi çalışıyor:
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
Bu da yardımcı olabilir: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html
Rakamınızın boyutunu N kat arttırmak için bunu pl.show () öğesinden hemen önce eklemeniz gerekir:
N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )
Ayrıca ipython dizüstü bilgisayar ile iyi çalışır.
Matplotlib yana mümkün değildir Eğer uzunlukta bir makul ünitesinde rakamın büyüklüğünü belirtmek istiyorsanız bu tür santimetre olarak, doğal olarak metrik sistemi kullanmak için, aşağıdaki (kod yapabilirsiniz 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)
Sonra şunları kullanabilirsiniz:
plt.figure(figsize=cm2inch(21, 29.7))
Psihodelia'nın cevabını genelleme ve basitleştirme. Şeklin geçerli boyutunu bir faktörle değiştirmek istiyorsanızsizefactor
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)
Geçerli boyutu değiştirdikten sonra, alt alan düzenine ince ayar yapmanız gerekebilir . Bunu şekil penceresi GUI'sinde veya komut aracılığıyla yapabilirsiniz. subplots_adjust
Örneğin,
plt.subplots_adjust(left=0.16, bottom=0.19, top=0.82)
Matplotlib'de rc () işlevini kullanmak için başka bir seçenek (birim inçtir)
import matplotlib
matplotlib.rc('figure', figsize=[10,5])
Şekil boyutunu doğrudan kullanarak
plt.set_figsize(figure=(10, 10))
pyplot
adında bir yöntem yok set_figsize
.
plt.figure(figsize=(20,10))