Hoe verander ik de figuurgrootte voor een zeegeboren plot?

Hoe wijzig ik de grootte van mijn afbeelding zodat deze geschikt is om af te drukken?

Ik wil bijvoorbeeld A4-papier gebruiken, waarvan de afmetingen 11,7 inch bij 8,27 inch zijn in liggende richting.


Antwoord 1, autoriteit 100%

U moet de matplotlib Figure en Axes-objecten van tevoren maken en specificeren hoe groot de figuur is:

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)

Antwoord 2, autoriteit 95%

Je kunt de figuurgrootte ook instellen door het woordenboek door te geven aan de parameter rcmet de sleutel 'figure.figsize'in de seaborn set-methode:

import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})

Een ander alternatief kan zijn om figure.figsizevan rcParamste gebruiken om de figuurgrootte in te stellen zoals hieronder:

from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27

Meer details zijn te vinden in matplotlib-documentatie


Antwoord 3, autoriteit 51%

Houd er rekening mee dat als u probeert over te gaan naar een “cijferniveau”-methode in seaborn (bijvoorbeeld lmplot, catplot/ factorplot, jointplot) je kunt en moet dit specificeren binnen de argumenten met behulp van heighten aspect.

sns.catplot(data=df, x='xvar', y='yvar', 
    hue='hue_bar', height=8.27, aspect=11.7/8.27)

Zie https://github.com/mwaskom/seaborn/issues/488en Plotten met seaborn met behulp van de matplotlib object-georiënteerde interfacevoor meer details over het feit dat methoden op figuurniveau niet voldoen aan de specificaties van de assen.


Antwoord 4, autoriteit 36%

Je kunt de context instellen als posterof handmatig fig_sizeinstellen.

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')


Antwoord 5, autoriteit 33%

importeer eerst matplotlib en gebruik het om de grootte van het figuur in te stellen

from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,8))
ax = sns.barplot(x="Word", y="Frequency", data=boxdata)

Antwoord 6, autoriteit 19%

Dit kan worden gedaan met:

plt.figure(figsize=(15,8))
sns.kdeplot(data,shade=True)

Antwoord 7, Autoriteit 16%

In aanvulling op ELZ Antwoord met betrekking tot “figuurtniveau” -methoden die multi-perceel rasterobjecten retourneren, is het mogelijk om de figuurhoogte en breedte expliciet in te stellen (dat is zonder een beeldverhouding) met behulp van het volgende Aanpak:

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)

Antwoord 8, Autoriteit 10%

Dit zal ook werken.

from matplotlib import pyplot as plt
import seaborn as sns    
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)

Antwoord 9, Autoriteit 8%

Voor mijn perceel (een SNS-factorplot) Het voorgestelde antwoord werkt niet goed.

Zo gebruik ik

plt.gcf().set_size_inches(11.7, 8.27)

net na het perceel met op zee (dus niet nodig om een ​​bijl naar boven te halen of om de RC-instellingen te wijzigen).


Antwoord 10, Autoriteit 3%

De topantwoorden van Paul H en J. Li werken niet voor alle soorten bubir-figuren. Voor de FacetGridType (bijvoorbeeld sns.lmplot()), gebruik de sizeen aspectparameter.

SizeWijzigt zowel de hoogte als de breedte, waarbij de beeldverhouding wordt gehandhaafd.

aspectWijzigt alleen de breedte, bewaar de hoogte constant.

U kunt altijd uw gewenste maat krijgen door met deze twee parameters te spelen.

Credit: https://stackoverflow.com/a/28765059/3901029


Antwoord 11

# Sets the figure size temporarily but has to be set again the next plot
plt.figure(figsize=(18,18))
sns.barplot(x=housing.ocean_proximity, y=housing.median_house_value)
plt.show()


Antwoord 12

Sommige uitgeprobeerd manieren:

import seaborn as sns
import matplotlib.pyplot as plt
ax, fig = plt.subplots(figsize=[15,7])
sns.boxplot(x="feature1", y="feature2",data=df) # where df would be your dataframe

of

import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=[15,7])
sns.boxplot(x="feature1", y="feature2",data=df) # where df would be your dataframe

Other episodes