Seaborn - Lưới khía cạnh
Một cách tiếp cận hữu ích để khám phá dữ liệu trung bình, là vẽ nhiều bản sao của cùng một biểu đồ trên các tập con khác nhau của tập dữ liệu của bạn.
Kỹ thuật này thường được gọi là vẽ "lưới", hoặc "lưới mắt cáo", và nó liên quan đến ý tưởng về "bội số nhỏ".
Để sử dụng các tính năng này, dữ liệu của bạn phải ở trong Pandas DataFrame.
Lập đồ thị bội số nhỏ của tập dữ liệu con
Trong chương trước, chúng ta đã thấy ví dụ về FacetGrid trong đó lớp FacetGrid giúp trực quan hóa phân phối của một biến cũng như mối quan hệ giữa nhiều biến riêng biệt trong các tập con của tập dữ liệu của bạn bằng cách sử dụng nhiều bảng.
Một FacetGrid có thể được vẽ với tối đa ba thứ nguyên - hàng, cột và màu. Hai đầu tiên có sự tương ứng rõ ràng với mảng kết quả của các trục; hãy nghĩ về biến màu sắc như một chiều thứ ba dọc theo trục độ sâu, nơi các mức khác nhau được vẽ với các màu khác nhau.
FacetGrid đối tượng lấy khung dữ liệu làm đầu vào và tên của các biến sẽ tạo thành kích thước hàng, cột hoặc màu của lưới.
Các biến phải được phân loại và dữ liệu ở mỗi cấp của biến sẽ được sử dụng cho một khía cạnh dọc theo trục đó.
Thí dụ
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
plt.show()
Đầu ra
Trong ví dụ trên, chúng tôi vừa khởi tạo facetgrid đối tượng không vẽ bất cứ thứ gì trên chúng.
Cách tiếp cận chính để hiển thị dữ liệu trên lưới này là với FacetGrid.map()phương pháp. Hãy để chúng tôi xem xét sự phân phối các mẹo trong mỗi tập hợp con này, sử dụng biểu đồ.
Thí dụ
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
g.map(plt.hist, "tip")
plt.show()
Đầu ra
Số ô nhiều hơn một vì tham số col. Chúng tôi đã thảo luận về tham số col trong các chương trước của chúng tôi.
Để tạo một biểu đồ quan hệ, hãy chuyển nhiều tên biến.
Thí dụ
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "sex", hue = "smoker")
g.map(plt.scatter, "total_bill", "tip")
plt.show()