Bagaimana Anda mengubah ukuran gambar yang digambar dengan matplotlib?
fig, ax = plt.subplots(figsize=(20, 10))
fig = plt.gcf()
-> fig.set_size_inches(11,8)
untuk menghindari kebingungan sekali dan untuk semua.
Bagaimana Anda mengubah ukuran gambar yang digambar dengan matplotlib?
fig, ax = plt.subplots(figsize=(20, 10))
fig = plt.gcf()
-> fig.set_size_inches(11,8)
untuk menghindari kebingungan sekali dan untuk semua.
Jawaban:
gambar memberi tahu Anda tanda tangan panggilan:
from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')
figure(figsize=(1,1))
akan membuat gambar inci-demi-inci, yang akan menjadi 80-oleh-80 piksel kecuali Anda juga memberikan argumen dpi berbeda.
show()
untuk membuat jendela popup, Anda perlu menelepon figure(num=1,...)
sebelum merencanakan apa pun - pyplot / pylab membuat angka segera setelah Anda menggambar sesuatu, dan ukuran popup muncul diperbaiki pada saat ini.
Jika Anda telah membuat gambar, Anda dapat dengan cepat melakukan ini:
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)
Untuk menyebarkan perubahan ukuran ke jendela gui yang ada tambahkan forward=True
fig.set_size_inches(18.5, 10.5, forward=True)
imshow
, sekarang saya menggunakan kode ini setelah menghilangkan ruang di sekitar area plot plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)
.
fig.set_dpi(100)
.
Catatan penghentian :
Sesuai dengan panduan resmi Matplotlib , penggunaanpylab
modul tidak lagi direkomendasikan. Silakan pertimbangkan menggunakanmatplotlib.pyplot
modul sebagai gantinya, seperti yang dijelaskan oleh jawaban lain ini .
Tampaknya ini berfungsi:
from pylab import rcParams
rcParams['figure.figsize'] = 5, 10
Ini membuat lebar gambar 5 inci, dan tingginya 10 inci .
Kelas Gambar kemudian menggunakan ini sebagai nilai default untuk salah satu argumennya.
fig.set_size_inches(18.5, 10.5, forward=True)
bekerja.
Ada juga solusi ini jika Anda ingin mengubah ukuran tanpa menggunakan lingkungan gambar. Jadi jika Anda menggunakan plt.plot()
misalnya, Anda dapat mengatur tuple dengan lebar dan tinggi.
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)
Ini sangat berguna saat Anda memplot inline (mis. Dengan IPython Notebook). Seperti yang diperhatikan @asamaier, lebih baik tidak menaruh pernyataan ini di sel yang sama dengan pernyataan impor.
The figsize
tuple menerima inci jadi jika Anda ingin mengaturnya dalam sentimeter Anda harus membagi mereka dengan 2,54 memiliki melihat ke pertanyaan ini .
plt.rcParams["figure.figsize"] = (20,3)
sel ekstra. Ketika saya menyebutnya di sel yang sama dengan pernyataan impor, itu diabaikan.
Silakan coba kode sederhana sebagai berikut:
from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()
Anda perlu mengatur ukuran gambar sebelum Anda plot.
atplotlib.pyplot.figure
, yang orang lain tidak katakan dengan jelas. Saya terus mencoba hal-hal seperti matplotlib.figure
danmatplotlib.figure.Figure
plt.figure(figsize=(1,1))
adalah langkah terpenting. Terima kasih.
Jika Anda sedang mencari cara untuk mengubah ukuran gambar di Panda , Anda dapat melakukan mis:
df['some_column'].plot(figsize=(10, 5))
di mana df
adalah kerangka data Pandas. Atau, untuk menggunakan gambar atau sumbu yang ada
fig, ax = plt.subplots(figsize=(10,5))
df['some_column'].plot(ax=ax)
Jika Anda ingin mengubah pengaturan default, Anda dapat melakukan hal berikut:
import matplotlib
matplotlib.rc('figure', figsize=(10, 5))
Tautan pertama di Google untuk 'matplotlib figure size'
adalah AdjustingImageSize ( Google cache halaman ).
Berikut ini skrip pengujian dari halaman di atas. Ini membuat test[1-3].png
file dengan ukuran berbeda dari gambar yang sama:
#!/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.
Keluaran:
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.]
Dua catatan:
Komentar modul dan output aktual berbeda.
Jawaban ini memungkinkan untuk dengan mudah menggabungkan ketiga gambar dalam satu file gambar untuk melihat perbedaan ukuran.
fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) )
Anda cukup menggunakan (dari matplotlib.figure.Figure ):
fig.set_size_inches(width,height)
Pada Matplotlib 2.0.0, perubahan pada kanvas Anda akan segera terlihat, sebagai forward
kata kunci default untukTrue
.
Jika Anda hanya ingin mengubah lebar atau tinggi alih-alih keduanya, Anda bisa menggunakannya
fig.set_figwidth(val)
atau fig.set_figheight(val)
Ini juga akan segera memperbarui kanvas Anda, tetapi hanya di Matplotlib 2.2.0 dan yang lebih baru.
Anda harus menentukan forward=True
secara eksplisit untuk memperbarui kanvas Anda dalam versi yang lebih lama dari yang ditentukan di atas. Perhatikan bahwa set_figwidth
dan set_figheight
fungsi tidak mendukung forward
parameter dalam versi yang lebih lama dari Matplotlib 1.5.0.
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))
plt.plot(x,y) ## This is your plot
plt.show()
Anda juga bisa menggunakan:
fig, ax = plt.subplots(figsize=(20, 10))
Cobalah berkomentar di luar fig = ...
garis
%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()
Ini bekerja dengan baik untuk saya:
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
Ini juga dapat membantu: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html
Untuk menambah ukuran gambar Anda N kali Anda harus memasukkan ini tepat sebelum pl.show ():
N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )
Ini juga bekerja dengan baik dengan notebook ipython.
Karena Matplotlib tidak dapat menggunakan sistem metrik secara asli, jika Anda ingin menentukan ukuran gambar Anda dalam satuan panjang yang wajar seperti sentimeter, Anda dapat melakukan hal berikut (kode dari 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)
Maka Anda dapat menggunakan:
plt.figure(figsize=cm2inch(21, 29.7))
Menyamaratakan dan menyederhanakan jawaban psihodelia. Jika Anda ingin mengubah ukuran saat ini dengan faktorsizefactor
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)
Setelah mengubah ukuran saat ini, mungkin Anda harus menyesuaikan tata letak subplot . Anda dapat melakukannya di GUI jendela gambar, atau dengan menggunakan perintah subplots_adjust
Sebagai contoh,
plt.subplots_adjust(left=0.16, bottom=0.19, top=0.82)
Pilihan lain, untuk menggunakan fungsi rc () di matplotlib (unit ini inci)
import matplotlib
matplotlib.rc('figure', figsize=[10,5])
Anda langsung mengubah ukuran gambar dengan menggunakan
plt.set_figsize(figure=(10, 10))
pyplot
tidak memiliki metode apa pun yang dinamai set_figsize
.
plt.figure(figsize=(20,10))