Nhãn trục trên Seaborn Barplot


125

Tôi đang cố gắng sử dụng nhãn của riêng mình cho một mã vạch Seaborn với mã sau:

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

nhập mô tả hình ảnh ở đây

Tuy nhiên, tôi gặp lỗi:

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

Đưa cái gì?

Câu trả lời:


235

Barplot của Seaborn trả về một đối tượng trục (không phải một hình). Điều này có nghĩa là bạn có thể làm như sau:

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
seabornkhông có cách riêng để thiết lập những điều này - mà không liên quan matplotlib?
javadba

Vì vậy, quy tắc chung là FacetGrid/ bất cứ điều gì có khía cạnh trả về một đối tượng hình và mọi thứ khác trả về một đối tượng trục?
alexpghayes

27

Người ta có thể tránh những điều AttributeErrormang lại bằng set_axis_labels()phương pháp bằng cách sử dụng matplotlib.pyplot.xlabelmatplotlib.pyplot.ylabel.

matplotlib.pyplot.xlabelđặt nhãn trục x trong khi matplotlib.pyplot.ylabelđặt nhãn trục y của trục hiện tại.

Mã giải pháp:

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)

Hình đầu ra:

nhập mô tả hình ảnh ở đây


13

Bạn cũng có thể đặt tiêu đề cho biểu đồ của mình bằng cách thêm thông số tiêu đề như sau

ax.set(xlabel='common xlabel', ylabel='common ylabel', title='some title')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.