web-dev-qa-db-fra.com

Comment éviter le chevauchement des étiquettes d'axe x dans sns.countplot

Pour l'intrigue

sns.countplot(x="HostRamSize",data=df)

J'ai obtenu le graphique suivant avec le mélange d'étiquettes sur l'axe des abscisses, comment puis-je éviter cela? Devrais-je changer la taille du graphique pour résoudre ce problème?

enter image description here

24
william007

Avoir une série ds comme ceci

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(136)

l = "1234567890123"
categories = [ l[i:i+5]+" - "+l[i+1:i+6] for i in range(6)]
x = np.random.choice(categories, size=1000, 
            p=np.diff(np.array([0,0.7,2.8,6.5,8.5,9.3,10])/10.))
ds = pd.Series({"Column" : x})

il existe plusieurs options pour rendre les étiquettes d'axes plus lisibles.

Changer la taille de la figure

plt.figure(figsize=(8,4)) # this creates a figure 8 inch wide, 4 inch high
sns.countplot(x="Column", data=ds)
plt.show()

Faire pivoter les ticklabels

ax = sns.countplot(x="Column", data=ds)

ax.set_xticklabels(ax.get_xticklabels(), rotation=40, ha="right")
plt.tight_layout()
plt.show()

enter image description here

Diminuer la taille de la police

ax = sns.countplot(x="Column", data=ds)

ax.set_xticklabels(ax.get_xticklabels(), fontsize=7)
plt.tight_layout()
plt.show()

enter image description here

Bien sûr, toute combinaison de ceux-ci fonctionnerait tout aussi bien.

Réglage de rcParams

La taille de la figure et la taille de la police xlabel peuvent être définies globalement en utilisant rcParams

plt.rcParams["figure.figsize"] = (8, 4)
plt.rcParams["xtick.labelsize"] = 7

Cela peut être utile de placer sur un bloc-notes juypter de telle sorte que ces paramètres s'appliquent à toute figure générée à l'intérieur. Malheureusement, la rotation des xticklabels n’est pas possible avec rcParams.

Je suppose qu’il est intéressant de noter que les mêmes stratégies s’appliqueraient naturellement aussi pour le barplot né de la mer, le complot pour le matplotlib ou les pandas.

Si vous voulez juste vous assurer que les étiquettes de xticks ne sont pas compressées, vous pouvez définir une taille de fig appropriée et essayer fig.autofmt_xdate().

Cette fonction alignera et fera automatiquement pivoter les étiquettes.

4
hui chen