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()
heighti aspect, jak wyjaśniono tutaj stackoverflow.com/a/51602446/2412831
Możesz także ustawić rozmiar figury, przekazując słownik do rcparametru za pomocą klucza 'figure.figsize'w setmetodzie morskiej :
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Inną alternatywą może być wykorzystanie figure.figsizena rcParamsdo 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 posterlub 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 heighti 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 heighti 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_figwidthi set_figheightdział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 FacetGridtypu (na przykład sns.lmplot()) użyj sizeiaspect 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.