0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Nâng Cao Seaborn: Facets, Tương Quan & Phong Cách Chuyên Nghiệp

Đăng vào 4 ngày trước

• 5 phút đọc

Nâng Cao Seaborn: Facets, Tương Quan & Phong Cách Chuyên Nghiệp

Seaborn là một trong những thư viện Python phổ biến nhất cho trực quan hóa dữ liệu. Nếu bạn đã nắm vững những kiến thức cơ bản (như biểu đồ phân tán, biểu đồ thanh, v.v.), hướng dẫn này sẽ giúp bạn nâng cao kỹ năng của mình.

Chúng ta sẽ đề cập đến:

  • Faceting & small multiples
  • Tương quan & heatmaps
  • Xu hướng theo thứ tự/thời gian
  • Phong cách & bảng màu
  • Chú thích, ghi chú và lưu biểu đồ
  • Những cạm bẫy thường gặp và mẹo chuyên nghiệp

Hãy bắt đầu nào! 👇


Faceting & Small Multiples

Faceting có nghĩa là chia dữ liệu của bạn thành các subplot theo danh mục. Điều này giúp việc so sánh trở nên dễ dàng hơn mà không làm rối một biểu đồ duy nhất.

Các Phương Pháp Thông Dụng

Phương Pháp Mô Tả
FacetGrid Faceting linh hoạt, thấp cấp
catplot / relplot Biểu đồ cấp cao với faceting tích hợp

Ví Dụ 1: Biểu Đồ Thanh Faceted Theo Người Hút Thuốc

python Copy
import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

sns.catplot(
    data=tips, x="day", y="tip", hue="sex", col="smoker", kind="bar"
)
plt.suptitle("Tips theo Ngày (Faceted theo Người Hút Thuốc)", y=1.02)
plt.show()

Ví Dụ 2: Biểu Đồ Phân Tán với Facets

python Copy
sns.relplot(
    data=tips, x="total_bill", y="tip", hue="sex", col="time", kind="scatter"
)
plt.show()

Tương Quan & Heatmaps

Heatmaps tóm tắt các mối quan hệ số một cách trực quan. Chúng rất tốt để phát hiện các mẫu và sức mạnh của sự tương quan.

Ví Dụ 1: Heatmap Tương Quan Đơn Giản

python Copy
corr = tips[["total_bill", "tip", "size"]].corr()

sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm", square=True)
plt.title("Tương Quan (tips)")
plt.show()

Ví Dụ 2: Heatmap Cụm (Nhóm Các Biến Tương Tự)

python Copy
sns.clustermap(corr, annot=True, fmt=".2f", cmap="coolwarm")
plt.show()

👉 Mẹo Nhanh:

  • Giá trị gần +1 hoặc -1 = mối quan hệ mạnh
  • Giá trị gần 0 = mối quan hệ yếu hoặc không có

Xu Hướng Thời Gian/Đặt Hàng

Đối với các biến có thứ tự (như thời gian, kích thước hoặc chuỗi), biểu đồ đường là lý tưởng.

Ví Dụ: Tip Trung Bình Theo Kích Thước Bàn

python Copy
avg = tips.groupby("size", as_index=False)["tip"].mean()

sns.lineplot(data=avg, x="size", y="tip")
plt.title("Tip Trung Bình Theo Kích Thước Nhóm")
plt.show()

Phong Cách, Bảng Màu & Bố Cục

Phong cách tốt = biểu đồ chuyên nghiệp.

Sử dụng sns.set_theme() để áp dụng cài đặt toàn cục.

Các Tùy Chọn

Tham Số Ví Dụ
style "white", "whitegrid", "dark", "darkgrid", "ticks"
palette "deep", "muted", "bright", color_palette()
context "notebook", "talk", "paper", "poster"

Ví Dụ: Biểu Đồ Phân Tán Đã Được Thể Hiện

python Copy
sns.set_theme(style="whitegrid", context="talk", palette="deep")

ax = sns.scatterplot(data=tips, x="total_bill", y="tip", hue="sex")
ax.set_title("Tips so với Tổng Hóa Đơn")
ax.set_xlabel("Tổng Hóa Đơn ($)")
ax.set_ylabel("Tip ($)")

sns.despine()
plt.tight_layout()
plt.show()

Chú Thích, Ghi Chú & Lưu

Luôn ghi rõ biểu đồ và lưu ở độ phân giải cao cho các báo cáo.

Ví Dụ: Biểu Đồ Hồi Quy Có Ghi Chú

python Copy
ax = sns.regplot(data=tips, x="total_bill", y="tip")
ax.annotate("Tips cao hơn với hóa đơn cao hơn",
            xy=(40,7), xytext=(25,8.5),
            arrowprops=dict(arrowstyle="->", color="white"))

# Xóa chú thích nếu không cần thiết
ax.legend_.remove() if ax.legend_ else None  

plt.tight_layout()
plt.savefig("tips_scatter.png", dpi=300, bbox_inches="tight", transparent=True)
plt.show()

Hàm Cấp Figure và Axes

Loại Ví Dụ Khi Nào Sử Dụng
Cấp Axes scatterplot, lineplot, histplot, boxplot, violinplot, heatmap, regplot Quản lý các subplot bằng tay
Cấp Figure relplot, catplot, jointplot, pairplot, lmplot Lưới/facet tự động

👉 Quy tắc chung:

  • Cấp Axes = nhiều kiểm soát, bố cục thủ công
  • Cấp Figure = lưới nhanh, ít mã hơn

Những Cạm Bẫy Thường Gặp (và Giải Pháp)

Vấn Đề Giải Pháp
Quá nhiều điểm chồng chéo Sử dụng alpha=0.5, hexbin, hoặc kdeplot
Nhãn mặc định không rõ ràng Luôn thiết lập tiêu đề, nhãn, chú thích
So sánh nhóm kém Sử dụng violinplot/boxplot + stripplot thay vì trung bình thanh
Màu sắc không đồng nhất Giữ một bảng màu xuyên suốt các biểu đồ liên quan

Repo link — GitHub


Thực Hành Tốt Nhất

  • Luôn đặt tên cho các biến: Giúp mã dễ đọc và bảo trì hơn.
  • Sử dụng chú thích rõ ràng: Giúp người khác hiểu rõ hơn về mã của bạn.

Các Trường Hợp Khó Xử

  • Nếu gặp phải lỗi khi tải dữ liệu, hãy kiểm tra đường dẫn và định dạng tệp.
  • Đảm bảo rằng bạn đã cài đặt tất cả các thư viện cần thiết trước khi chạy mã.

Hãy thử nghiệm với các tùy chọn khác nhau trong Seaborn để tìm ra phong cách trực quan hóa phù hợp nhất với dữ liệu của bạn!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào