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.
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
iaspect
, jak wyjaśniono tutaj stackoverflow.com/a/51602446/2412831Możesz także ustawić rozmiar figury, przekazując słownik do
rc
parametru za pomocą klucza'figure.figsize'
wset
metodzie morskiej :Inną alternatywą może być wykorzystanie
figure.figsize
narcParams
do zadanej wielkości rysunku poniżej:Więcej szczegółów można znaleźć w dokumentacji matplotlib
źródło
.set()
wcześniej.set_style()
Możesz ustawić kontekst na
poster
lub ustawić ręczniefig_size
.źródło
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ącheight
iaspect
.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.
źródło
najpierw zaimportuj matplotlib i użyj go, aby ustawić rozmiar figury
źródło
Można to zrobić za pomocą:
źródło
To też zadziała.
źródło
W przypadku mojego wykresu (wykres współczynnika sns) proponowana odpowiedź nie działała dobrze.
Tak używam
Zaraz po poletku z dnem morskim (więc nie trzeba przepuszczać siekiery do dna morskiego ani zmieniać ustawień rc).
źródło
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ą przezheight
iaspect
) 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 figuryOpró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:
źródło
set_figwidth
iset_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ładsns.lmplot()
) użyjsize
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.
Źródło: https://stackoverflow.com/a/28765059/3901029
źródło