Jak zmienić rozmiar mojego obrazu, aby był odpowiedni do drukowania?
Na przykład chciałbym użyć papieru A4, którego wymiary to 11,7 cala na 8,27 cala w orientacji poziomej.
Jak zmienić rozmiar mojego obrazu, aby był odpowiedni do drukowania?
Na przykład chciałbym użyć papieru A4, którego wymiary to 11,7 cala na 8,27 cala w orientacji poziomej.
Odpowiedzi:
Musisz wcześniej utworzyć obiekty figury i osi matplotlib, określając, jak duża jest ta figura:
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
i aspect
, jak wyjaśniono tutaj stackoverflow.com/a/51602446/2412831
Możesz także ustawić rozmiar figury, przekazując słownik do rc
parametru za pomocą klucza 'figure.figsize'
w set
metodzie morskiej :
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Inną alternatywą może być wykorzystanie figure.figsize
na rcParams
do zadanej wielkości rysunku poniżej:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Więcej szczegółów można znaleźć w dokumentacji matplotlib
.set()
wcześniej.set_style()
Możesz ustawić kontekst na poster
lub ustawić ręcznie 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()
Zauważ, że jeśli próbuje przejść do „poziomu postać” metody w Seaborn (na przykład lmplot
, catplot
/ factorplot
, jointplot
) można i należy to określić w ciągu argumentów używając height
i aspect
.
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
Zobacz https://github.com/mwaskom/seaborn/issues/488 i Plotowanie przy użyciu dna morskiego za pomocą zorientowanego obiektowo interfejsu matplotlib, aby uzyskać więcej informacji na temat tego, że metody na poziomie figury nie są zgodne ze specyfikacjami osi.
To też zadziała.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
W przypadku mojego wykresu (wykres współczynnika sns) proponowana odpowiedź nie działała dobrze.
Tak używam
plt.gcf().set_size_inches(11.7, 8.27)
Zaraz po poletku z dnem morskim (więc nie trzeba przepuszczać siekiery do dna morskiego ani zmieniać ustawień 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
że ustawiłbym rozmiar figury zgodnie z obliczoną wartością (ustawioną przez height
i aspect
) i zmiana rozmiaru figury bezpośrednio po wykreśleniu dna morskiego będzie działać. A inne dopracowanie fabuły może nastąpić po zmianie wielkości figury
Oprócz odpowiedzi Elza dotyczącej metod „poziomu figury”, które zwracają obiekty siatki z wieloma wykresami, możliwe jest jawne ustawienie wysokości i szerokości figury (bez użycia współczynnika kształtu), stosując następujące podejście:
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
i set_figheight
działa dobrze dla obiektów siatki. >>> importuj seaborn >>> importuj matplotlib.pyplot jako pyplot >>> tips = seaborn.load_dataset („tips”) >>> g = seaborn.FacetGrid (tips, col = „time”, row = „palacz”) >>> g = g.map (pyplot.hist, "total_bill") >>> g.fig.set_figwidth (10) >>> g.fig.set_figheight (10)
Najważniejsze odpowiedzi Paula H i J. Li nie działają na wszystkie typy postaci z dna morskiego. Dla FacetGrid
typu (na przykład sns.lmplot()
) użyj size
iaspect
parametru .
Size
zmienia zarówno wysokość, jak i szerokość, zachowując proporcje.
Aspect
zmienia tylko szerokość, utrzymując stałą wysokość.
Zawsze możesz uzyskać pożądany rozmiar, grając z tymi dwoma parametrami.