Oznacz osie na wykresie Barplot Seaborn


125

Próbuję użyć własnych etykiet dla wykresu paskowego Seaborn z następującym kodem:

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')

wprowadź opis obrazu tutaj

Jednak pojawia się błąd, który:

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

Co daje?

Odpowiedzi:


235

Wykres słupkowy Seaborn zwraca obiekt-oś (nie figurę). Oznacza to, że możesz wykonać następujące czynności:

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
seabornnie ma własnego sposobu, aby to ustawić - bez angażowania matplotlib?
javadba

Więc ogólna zasada brzmi FacetGrid/ cokolwiek, co fasety zwraca obiekt figury, a wszystko inne zwraca obiekt osi?
alexpghayes

27

Można uniknąć AttributeErrorspowodowanego przez set_axis_labels()metodę, używając matplotlib.pyplot.xlabeli matplotlib.pyplot.ylabel.

matplotlib.pyplot.xlabelustawia etykietę osi x, podczas gdy matplotlib.pyplot.ylabelustawia etykietę osi y bieżącej osi.

Kod rozwiązania:

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)

Rysunek wyjściowy:

wprowadź opis obrazu tutaj


13

Możesz także ustawić tytuł wykresu, dodając parametr title w następujący sposób

ax.set(xlabel='common xlabel', ylabel='common ylabel', title='some title')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.