Étiqueter les axes sur Seaborn Barplot


127

J'essaie d'utiliser mes propres étiquettes pour un barplot Seaborn avec le code suivant:

import pandas as pd
import seaborn as sns

fake = pd.DataFrame({'cat': ['red', 'green', 'blue'], 'val': [1, 2, 3]})
fig = sns.barplot(x = 'val', y = 'cat', 
                  data = fake, 
                  color = 'black')
fig.set_axis_labels('Colors', 'Values')

entrez la description de l'image ici

Cependant, j'obtiens une erreur qui:

AttributeError: 'AxesSubplot' object has no attribute 'set_axis_labels'

Ce qui donne?

Réponses:


237

Le barplot de Seaborn renvoie un axe-objet (pas une figure). Cela signifie que vous pouvez effectuer les opérations suivantes:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

fake = pd.DataFrame({'cat': ['red', 'green', 'blue'], 'val': [1, 2, 3]})
ax = sns.barplot(x = 'val', y = 'cat', 
              data = fake, 
              color = 'black')
ax.set(xlabel='common xlabel', ylabel='common ylabel')
plt.show()

2
seabornn'a pas sa propre façon de définir ces derniers - sans impliquer matplotlib?
javadba le

Donc, la règle générale est FacetGrid/ tout ce que les facettes retourne un objet figure et tout le reste renvoie un objet axe?
alexpghayes

28

On peut éviter le AttributeErrorprovoqué par la set_axis_labels()méthode en utilisant le matplotlib.pyplot.xlabelet matplotlib.pyplot.ylabel.

matplotlib.pyplot.xlabeldéfinit le libellé de l'axe x tandis que le matplotlib.pyplot.ylabeldéfinit le libellé de l'axe y de l'axe actuel.

Code de la solution:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

fake = pd.DataFrame({'cat': ['red', 'green', 'blue'], 'val': [1, 2, 3]})
fig = sns.barplot(x = 'val', y = 'cat', data = fake, color = 'black')
plt.xlabel("Colors")
plt.ylabel("Values")
plt.title("Colors vs Values") # You can comment this line out if you don't need title
plt.show(fig)

Chiffre de sortie:

entrez la description de l'image ici


13

Vous pouvez également définir le titre de votre graphique en ajoutant le paramètre title comme suit

ax.set(xlabel='common xlabel', ylabel='common ylabel', title='some title')
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.