Bagaimana cara mengubah ukuran gambar saya sehingga cocok untuk dicetak?
Sebagai contoh, saya ingin menggunakan kertas A4, yang dimensi 11,7 inci kali 8,27 inci dalam orientasi lanskap.
Bagaimana cara mengubah ukuran gambar saya sehingga cocok untuk dicetak?
Sebagai contoh, saya ingin menggunakan kertas A4, yang dimensi 11,7 inci kali 8,27 inci dalam orientasi lanskap.
Jawaban:
Anda harus membuat objek Gambar dan Sumbu matplotlib sebelumnya, menentukan seberapa besar angka tersebut:
from matplotlib import pyplot
import seaborn
import mylib
a4_dims = (11.7, 8.27)
df = mylib.load_data()
fig, ax = pyplot.subplots(figsize=a4_dims)
seaborn.violinplot(ax=ax, data=df, **violin_options)
sns.lmplot()
height
dan aspect
seperti yang dijelaskan di sini stackoverflow.com/a/51602446/2412831
Anda juga dapat mengatur ukuran gambar dengan meneruskan kamus ke rc
parameter dengan metode 'figure.figsize'
seaborn set
:
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Alternatif lain mungkin menggunakan figure.figsize
dari rcParams
ukuran gambar set seperti di bawah ini:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Rincian lebih lanjut dapat ditemukan di dokumentasi matplotlib
.set()
sebelumnya.set_style()
Anda dapat mengatur konteks menjadi poster
atau diatur secara manual fig_size
.
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
np.random.seed(0)
n, p = 40, 8
d = np.random.normal(0, 2, (n, p))
d += np.log(np.arange(1, p + 1)) * -5 + 10
# plot
sns.set_style('ticks')
fig, ax = plt.subplots()
# the size of A4 paper
fig.set_size_inches(11.7, 8.27)
sns.violinplot(data=d, inner="points", ax=ax)
sns.despine()
fig.savefig('example.png')
sns.lmplot()
Perhatikan bahwa jika Anda mencoba meneruskan ke metode "angka tingkat" di seaborn (misalnya lmplot
, catplot
/ factorplot
, jointplot
) Anda bisa dan harus menentukan ini dalam argumen menggunakan height
dan aspect
.
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
Lihat https://github.com/mwaskom/seaborn/issues/488 dan Merencanakan dengan seaborn menggunakan antarmuka berorientasi objek matplotlib untuk detail lebih lanjut tentang fakta bahwa metode level figur tidak mematuhi spesifikasi sumbu.
Ini juga akan berfungsi.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
Untuk plot saya (a sns factorplot) jawaban yang diajukan tidak berfungsi dengan baik.
Jadi saya gunakan
plt.gcf().set_size_inches(11.7, 8.27)
Tepat setelah plot dengan seaborn (jadi tidak perlu melewatkan kapak ke seaborn atau mengubah pengaturan rc).
python g = sns.FacetGrid(df.set_index('category'), col="id") pyplot.gcf().set_size_inches(11.7, 8.27) g.map(lambda data, color: data.plot.barh(color=color), "count")
sns.FacetGrid
akan mengatur ukuran gambar sesuai dengan nilai yang dihitung (ditetapkan oleh height
dan aspect
) dan mengubah ukuran gambar langsung setelah plot seaborn akan bekerja. Dan penyempurnaan plot lainnya dapat terjadi setelah mengubah ukuran gambar
Selain jawaban elz mengenai metode "angka", yang mengembalikan objek kotak multi-plot dimungkinkan untuk mengatur tinggi dan lebar angka secara eksplisit (tanpa menggunakan aspek rasio) menggunakan pendekatan berikut:
import seaborn as sns
g = sns.catplot(data=df, x='xvar', y='yvar', hue='hue_bar')
g.fig.set_figwidth(8.27)
g.fig.set_figheight(11.7)
set_figwidth
dan set_figheight
bekerja dengan baik untuk objek grid. >>> impor seaborn >>> impor matplotlib.pyplot sebagai pyplot >>> tips = seaborn.load_dataset ("tips") >>> g = seaborn.FacetGrid (kiat, col = "waktu", baris = "perokok") >>> g = g.map (pyplot.hist, "total_bill") >>> g.fig.set_figwidth (10) >>> g.fig.set_figheight (10)
Jawaban teratas oleh Paul H dan J. Li tidak bekerja untuk semua jenis tokoh seaborn. Untuk FacetGrid
tipe (misalnya sns.lmplot()
), gunakan parameter size
dan aspect
.
Size
mengubah ketinggian dan lebar, mempertahankan rasio aspek.
Aspect
hanya mengubah lebar, menjaga ketinggian konstan.
Anda selalu bisa mendapatkan ukuran yang diinginkan dengan bermain dengan dua parameter ini.