web-dev-qa-db-fra.com

Comment puis-je changer la taille de la police avec Seaborn FacetGrid?

J'ai tracé mes données avec factorplot dans seaborn et obtenir l'objet facetgrid, mais je ne comprends toujours pas comment les attributs suivants pourraient être définis dans un tel tracé:

  1. Taille de la légende: lorsque je trace beaucoup de variables, je reçois de très petites légendes, avec de petites polices.
  2. Tailles de police des étiquettes y et x (problème similaire à celui décrit ci-dessus)
32
james pardon

Vous pouvez redimensionner les polices dans votre appel à sns.set().

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
x = np.random.normal(size=37)
y = np.random.lognormal(size=37)

# defaults
sns.set()
fig, ax = plt.subplots()
ax.plot(x, y, marker='s', linestyle='none', label='small')
ax.legend(loc='upper left', bbox_to_anchor=(0, 1.1))

enter image description here

sns.set(font_scale=5)  # crazy big
fig, ax = plt.subplots()
ax.plot(x, y, marker='s', linestyle='none', label='big')
ax.legend(loc='upper left', bbox_to_anchor=(0, 1.3))

enter image description here

70
Paul H

Le graphique FacetGrid produit de jolies petites étiquettes. Bien que @ paul-h ait décrit l'utilisation de sns.set comme moyen de modifier la mise à l'échelle des polices, il se peut que ce ne soit pas la solution optimale, car cela modifiera le paramètre font_scale pour tous les tracés.

Vous pouvez utiliser le seaborn.plotting_context pour modifier les paramètres du tracé actuel uniquement:

with sns.plotting_context(font_scale=1.5):
    sns.factorplot(x, y ...)
20
achennu

J'ai apporté de petites modifications au code @ paul-H, de sorte que vous puissiez définir la taille de la police pour les axes x/y et la légende de manière indépendante. J'espère que ça aide:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
x = np.random.normal(size=37)
y = np.random.lognormal(size=37)

# defaults                                                                                                         
sns.set()
fig, ax = plt.subplots()
ax.plot(x, y, marker='s', linestyle='none', label='small')
ax.legend(loc='upper left', fontsize=20,bbox_to_anchor=(0, 1.1))
ax.set_xlabel('X_axi',fontsize=20);
ax.set_ylabel('Y_axis',fontsize=20);

plt.show()

C'est la sortie:

 enter image description here

3
Sergio Cobo

Pour la légende, vous pouvez utiliser cette 

plt.setp(g._legend.get_title(), fontsize=20)

Où g est votre objet facetgrid renvoyé après avoir appelé la fonction qui le crée. 

0
Hielke Walinga