Comment puis-je changer la taille de mon image pour qu'elle soit adaptée à l'impression?
Par exemple, j'aimerais utiliser du papier A4 dont les dimensions sont de 11,7 pouces sur 8,27 pouces en orientation paysage.
Vous devez créer les objets matplotlib Figure et Axes à l'avance, en précisant la taille de la figure:
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)
Vous pouvez également définir la taille de la figure en transmettant le dictionnaire au paramètre rc
à l'aide de la touche 'figure.figsize'
dans seaborn set
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Une autre solution consiste à utiliser figure.figsize
sur rcParams
pour définir la taille de la figure comme ci-dessous:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Plus de détails peuvent être trouvés dans documentation matplotlib
Vous pouvez définir le contexte sur poster
ou définir manuellement 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')
Notez que si vous essayez de passer à une méthode "au niveau de la figure" dans seaborn (par exemple, lmplot
, catplot
/factorplot
, jointplot
), vous pouvez et devez le spécifier. dans les arguments en utilisant height
et aspect
.
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
Voir https://github.com/mwaskom/seaborn/issues/488 et tracé avec Seaborn à l'aide de l'interface matplotlib orientée objet pour plus de détails sur le niveau de la figure les méthodes n'obéissent pas aux spécifications des axes.
importez d'abord matplotlib et utilisez-le pour définir la taille de la figure
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,8))
ax = sns.barplot(x="Word", y="Frequency", data=boxdata)
Pour ma parcelle (une parcelle factorielle sns), la réponse proposée ne fonctionnait pas bien.
Ainsi j'utilise
plt.gcf().set_size_inches(11.7, 8.27)
Juste après le complot avec Seaborn (donc pas besoin de passer une hache à Seaborn ou de changer les paramètres de rc).
Cela fonctionnera aussi.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
Les principales réponses de Paul H et J. Li ne fonctionnent pas pour tous les types de personnages nés dans la mer. Pour le type FacetGrid
(par exemple sns.lmplot()
), utilisez les paramètres size
et aspect
.
Size
change la hauteur et la largeur, tout en maintenant les proportions.
Aspect
ne change que la largeur, en maintenant la hauteur constante.
Vous pouvez toujours obtenir votre taille désirée en jouant avec ces deux paramètres.
En plus de elz réponse concernant les méthodes "au niveau de la figure" qui renvoient des objets de grille multi-tracés, il est possible de définir explicitement la hauteur et la largeur de la figure (c'est-à-dire sans utiliser le rapport de format) en utilisant l'approche suivante:
import seaborn as sns
g = sns.catplot(data=df, x='xvar', y='yvar', hue='hue_bar')
g.fig.set_figheight(8.27)
g.fig.set_figheight(11.7)
Cela peut être fait en utilisant:
plt.figure(figsize=(15,8))
sns.kdeplot(data,shade=True)