Bagaimana cara mengubah ukuran gambar saya jadi's cocok untuk percetakan?
Sebagai contoh, saya'd digunakan untuk kertas A4, dan dimensi 11.7 inci dengan inci 8.27 dalam orientasi landscape.
Anda juga dapat mengatur ukuran gambar dengan melewati kamus untuk rc
dengan parameter kunci 'angka.figsize'
di seaborn set
metode:
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Alternatif lain dapat menggunakan gambar.figsize
dari rcParams
untuk menetapkan angka ukuran 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 matplotlib dokumentasi
Yang anda butuhkan untuk membuat matplotlib Gambar dan Sumbu benda-benda dari waktu ke depan, menentukan seberapa besar angka adalah:
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)
Anda dapat mengatur konteks poster
atau secara manual mengatur 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')
Perhatikan bahwa jika anda mencoba untuk lulus untuk "angka tingkat" metode di seaborn (misalnya lmplot
, catplot
/ factorplot
, jointplot
) anda dapat dan harus menentukan ini dalam argumen menggunakan tinggi
dan aspek
.
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 https://stackoverflow.com/questions/23969619/plotting-with-seaborn-using-the-matplotlib-object-oriented-interface untuk lebih detail tentang fakta bahwa angka tingkat metode tidak mematuhi sumbu spesifikasi.
pertama impor matplotlib dan menggunakannya untuk mengatur ukuran gambar
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,8))
ax = sns.barplot(x="Word", y="Frequency", data=boxdata)
Bagi saya plot (sns factorplot) yang diusulkan jawaban didn't bekerja dengan baik.
Dengan demikian saya gunakan
plt.gcf().set_size_inches(11.7, 8.27)
Setelah plot dengan seaborn (jadi tidak perlu melewati kapak untuk seaborn atau untuk mengubah rc pengaturan).
Selain elz jawaban tentang "angka tingkat" metode yang kembali multi-plot grid benda-benda itu adalah mungkin untuk menetapkan angka tinggi dan lebar secara eksplisit (yang tanpa menggunakan aspek rasio) dengan menggunakan pendekatan sebagai 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)
Atas jawaban oleh Paul H dan J. Li tidak bekerja untuk semua jenis seaborn angka. Untuk FacetGrid
jenis (misalnya sns.lmplot()
), gunakan ukuran
dan aspek
parameter.
Size
perubahan kedua tinggi dan lebar, mempertahankan aspek rasio.
Aspek
hanya perubahan lebar, menjaga ketinggian konstan.
Anda selalu bisa mendapatkan ukuran yang anda inginkan dengan bermain dengan dua parameter.