Comment puis-je modifier la taille de mon image pour qu'elle soit adaptée à l'impression?
Par exemple, je voudrais utiliser du papier A4, dont les dimensions sont de 11,7 pouces par 8,27 pouces en orientation paysage.
Comment puis-je modifier la taille de mon image pour qu'elle soit adaptée à l'impression?
Par exemple, je voudrais utiliser du papier A4, dont les dimensions sont de 11,7 pouces par 8,27 pouces en orientation paysage.
Réponses:
Vous devez créer à l'avance les objets Figure et Axes matplotlib, en spécifiant 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)
sns.lmplot()
height
et aspect
comme expliqué ici stackoverflow.com/a/51602446/2412831
Vous pouvez également définir la taille de la figure en passant le dictionnaire au rc
paramètre avec la clé 'figure.figsize'
dans la set
méthode seaborn :
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Autre alternative peut être d'utiliser figure.figsize
de rcParams
la taille de la figure ci - dessous ensemble comme:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Plus de détails peuvent être trouvés dans la documentation de matplotlib
.set()
avant.set_style()
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')
sns.lmplot()
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 Plotting with seaborn à l'aide de l'interface orientée objet matplotlib pour plus de détails sur le fait que les méthodes au niveau des figures n'obéissent pas aux spécifications des axes.
Cela fonctionnera également.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
Pour mon intrigue (un facteur factoriel 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 l'intrigue avec seaborn (donc pas besoin de passer une hache à seaborn ou de changer les paramètres 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
une taille de figure en fonction d'une valeur calculée (définie par height
et aspect
) et que la modification de la taille de la figure directement après le tracé de Seaborn fonctionne. Et un autre réglage fin de l'intrigue peut se produire après avoir changé la taille de la figure
En plus de la réponse d' elz concernant les méthodes "au niveau de la figure" qui retournent des objets de grille multi-tracé, il est possible de définir la hauteur et la largeur de la figure de manière explicite (c'est-à-dire sans utiliser le rapport hauteur / largeur) en utilisant l'approche suivante:
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
et set_figheight
fonctionnent bien pour les objets de la grille. >>> importez seaborn >>> importez matplotlib.pyplot comme pyplot >>> tips = seaborn.load_dataset ("tips") >>> g = seaborn.FacetGrid (tips, col = "time", row = "smoker") >>> g = g.map (pyplot.hist, "total_bill") >>> g.fig.set_figwidth (10) >>> g.fig.set_figheight (10)
Les meilleures réponses de Paul H et J. Li ne fonctionnent pas pour tous les types de personnages nés de la mer. Pour le FacetGrid
type (par exemple sns.lmplot()
), utilisez le paramètre size
et aspect
.
Size
modifie à la fois la hauteur et la largeur, en conservant le rapport hauteur / largeur.
Aspect
ne change que la largeur, en gardant la hauteur constante.
Vous pouvez toujours obtenir la taille souhaitée en jouant avec ces deux paramètres.