Học cách tạo và tùy biến barplot trong Seaborn với Python. Nắm vững các kỹ thuật thiết yếu để trực quan hóa mối quan hệ dữ liệu phân loại, từ biểu đồ cơ bản đến tính năng nâng cao.
Trực quan hóa dữ liệu biến thông tin phức tạp thành những insight rõ ràng, có thể hành động. Barplot trong Seaborn vượt trội khi trình bày dữ liệu phân loại thông qua đồ họa thống kê tinh gọn, đẹp mắt. Thư viện kết hợp tính linh hoạt của Matplotlib với sức mạnh của pandas, rất phù hợp cho cả phân tích nhanh lẫn trực quan hóa sẵn sàng xuất bản.
Barplot của Seaborn cung cấp các tính năng thiết yếu cho phân tích dữ liệu - từ so sánh cơ bản đến biểu diễn thống kê nâng cao. Chúng xử lý tốt các tác vụ phổ biến như so sánh chỉ số bán hàng theo vùng, phân tích phản hồi khảo sát và trực quan hóa kết quả thí nghiệm.
Cú pháp trực quan và các hàm thống kê tích hợp khiến thư viện này hữu ích cho cả người mới bắt đầu lẫn người làm dữ liệu nhiều kinh nghiệm.
Trong bài viết này, chúng ta sẽ xem qua những điều cơ bản về barplot trong Seaborn, tạo biểu đồ cơ bản với ví dụ mã, nâng cấp biểu đồ qua tùy biến, triển khai các tính năng nâng cao và khám phá các ứng dụng thực tiễn.
Trước khi đi vào barplot, hãy điểm qua một số nền tảng của Seaborn, lợi thế của nó cho barplot và cách thiết lập môi trường mã hóa.
Seaborn là gì?
Seaborn là thư viện trực quan hóa dữ liệu thống kê bằng Python, xây dựng trên Matplotlib. Nó chuyên tạo các đồ họa thống kê giàu thông tin và hấp dẫn với lượng mã tối thiểu. Thư viện tích hợp chặt chẽ với pandas DataFrame, giúp đặc biệt hiệu quả cho quy trình phân tích dữ liệu.
Nó cung cấp giao diện bậc cao để vẽ biểu đồ bắt mắt, đồng thời tự động xử lý nhiều chi tiết về phong cách.
Thư viện nổi trội ở ba khía cạnh chính:
Tích hợp liền mạch với pandas DataFrame, giúp thao tác dữ liệu trở nên đơn giản
Đi kèm các hàm thống kê tích hợp, không cần tính toán riêng lẻ
Áp dụng sẵn các chủ đề và bảng màu chuyên nghiệp theo mặc định
Ví dụ, trong khi Matplotlib cần nhiều dòng mã để tạo một trực quan hóa thống kê cơ bản, Seaborn có thể hoàn thành cùng tác vụ chỉ với một lời gọi hàm.
Riêng với barplot, Seaborn bổ sung các tính năng mạnh như tính trung bình tự động, khoảng tin cậy và xử lý biến phân loại nâng cao - những khả năng mà nếu dùng Matplotlib thuần sẽ cần nhiều mã bổ sung đáng kể.
Vì sao dùng barplot?
Barplot trình bày dữ liệu phân loại bằng các cột dọc hoặc ngang, với độ dài biểu thị giá trị số. Điều này khiến chúng lý tưởng để so sánh giá trị giữa các nhóm hoặc hạng mục khác nhau. Trong phân tích dữ liệu, barplot giúp trực quan hóa kết quả khảo sát, thị phần, chỉ số hiệu suất và phân bố doanh số.
Các ưu điểm chính gồm:
So sánh rõ ràng lượng giữa các hạng mục
Tính năng thống kê tích hợp (trung bình, trung vị, khoảng tin cậy)
Biểu diễn hiệu quả dữ liệu theo nhóm
Thành phần trực quan đơn giản nhưng giàu thông tin
Tùy biến dễ dàng cho các bài thuyết trình chuyên nghiệp
Thiết lập nhanh
Để bắt đầu tạo barplot với Seaborn, chúng ta cần thiết lập môi trường Python. Cách bắt đầu như sau:
Đầu tiên, hãy cài đặt các gói cần thiết như bên dưới:
Giờ đây chúng ta đã sẵn sàng bộ công cụ trực quan hóa. Hãy import các thư viện cần dùng như sau:
# For creating statistical visualizationsimport seaborn as sns
# For data manipulation and analysisimport pandas as pd
# For numerical operationsimport numpy as npĐược hỗ trợ bởi
Chúng ta có thể làm biểu đồ trông đẹp hơn với một số thiết lập phong cách như sau:
Kiểu white loại bỏ đường lưới và sẽ giúp biểu đồ hiển thị đẹp trên hầu hết màn hình. Ở các phần tiếp theo, chúng ta sẽ xem cách tạo barplot và nâng cấp chúng.
Tạo Seaborn Barplot Cơ Bản
Barplot rất phù hợp để trực quan hóa mối quan hệ giữa biến phân loại và biến số. Nó hiển thị ước lượng điểm (như trung bình hoặc trung vị) và độ bất định xung quanh các ước lượng đó qua thanh sai số. Hãy xem cú pháp cơ bản của seaborn barplot.
Cú pháp và tham số
Hàm sns.barplot() trong Seaborn cung cấp cách trực tiếp để tạo barplot thống kê. Cấu trúc cơ bản của hàm .barplot() như dưới đây:
sns.barplot(
data=None,# Your DataFrame
x=None,# Category variable
y=None,# Numeric variable
estimator='mean',# Statistical function to estimate
errorbar=('ci',95),# Error bars type and level
orient=None# "v" for vertical, "h" for horizontal)Được hỗ trợ bởi
Các tham số này cho chúng ta quyền kiểm soát dữ liệu hiển thị và cách hiển thị. Tham số data nhận DataFrame của bạn, trong khi x và y chỉ định cột dùng cho hạng mục và giá trị. estimator cho phép chọn hàm thống kê áp dụng (mặc định là trung bình), và errorbar kiểm soát cách hiển thị độ bất định. Bạn cũng có thể chuyển giữa hướng dọc và ngang bằng tham số orient.
Giờ hãy xem cách tạo barplot hiệu quả bằng dataset tips tích hợp của Seaborn, chứa thông tin về hóa đơn và tiền tip ở nhà hàng.
Ví dụ: Trực quan hóa một tập dữ liệu đơn giản
Chúng ta sẽ xem hành vi tip theo các ngày trong tuần bằng dataset tips. Dataset này chứa thông tin về hóa đơn nhà hàng, bao gồm ngày trong tuần, tổng hóa đơn, tiền tip và các biến khác.
# Import required libraries and load datasetimport seaborn as sns
tips = sns.load_dataset("tips")# Create a basic barplot showing average tips by day
sns.barplot(data=tips, x="day", y="tip")Được hỗ trợ bởi
Output:
Đoạn mã đã tạo trực quan hóa ở trên, trong đó mỗi cột biểu diễn tiền tip trung bình cho một ngày trong tuần. Chiều cao mỗi cột thể hiện giá trị tip trung bình, còn các đường đen (thanh sai số) cho biết khoảng tin cậy 95% - giúp ta hiểu cả mức tip điển hình lẫn mức biến thiên.
Chúng ta cũng có thể xem mẫu tip theo các thời điểm bữa ăn khác nhau:
# Create a barplot showing average tips by time of day
sns.barplot(data=tips, x="time", y="tip")Được hỗ trợ bởi
Output:
Biểu đồ này cho thấy sự khác biệt hành vi tip giữa bữa trưa và bữa tối. Chiều cao mỗi cột biểu diễn tiền tip trung bình cho thời điểm đó trong ngày, với thanh sai số cho thấy độ biến thiên hành vi tip. Dạng trực quan này giúp dễ dàng nhận ra mẫu và so sánh nhóm trong nháy mắt.
Những barplot cơ bản này tạo nền tảng cho các trực quan hóa phức tạp hơn. Ở phần tiếp theo, chúng ta sẽ xem cách nâng cấp các biểu đồ với màu sắc, nhóm và các tùy biến khác để tạo trực quan hóa nhiều thông tin và thu hút hơn.
Nâng Cấp Barplot với Tùy Biến
Thêm yếu tố trực quan vào barplot có thể giúp dữ liệu hấp dẫn hơn và dễ hiểu hơn. Hãy xem các cách khác nhau để tùy biến barplot sử dụng dataset tips.
Thêm màu cho barplot
Seaborn cung cấp nhiều cách để thêm màu vào barplot, giúp chúng trực quan hơn và giàu thông tin hơn. Chúng ta có thể dùng một màu cho tất cả cột hoặc tạo nhóm mã màu,
Tham số color đặt một màu duy nhất cho tất cả cột, trong khi palette cho phép bạn chỉ định bảng màu khi dữ liệu có nhiều nhóm. Seaborn có sẵn nhiều bảng màu phù hợp với các loại dữ liệu khác nhau.
Chúng ta có thể tạo barplot đơn giản với một màu bằng tham số color như sau:
# Load the tips dataset if you haven't alreadyimport seaborn as sns
tips = sns.load_dataset("tips")# Single color barplot
sns.barplot(data=tips, x="day", y="tip", color="skyblue")Được hỗ trợ bởi
Output:
Chúng ta có thể tạo barplot với nhiều màu bằng tham số palette như sau:
# Load the tips dataset if you haven't alreadyimport seaborn as sns
tips = sns.load_dataset("tips")# Using a different color palette
sns.barplot(data=tips, x="day", y="tip", palette="Set2")Được hỗ trợ bởi
Output:
Seaborn barplot với nhiều cột
Một trong những tính năng mạnh nhất của barplot Seaborn là khả năng hiển thị mối quan hệ giữa nhiều biến bằng tham số hue. Điều này tạo các cột theo nhóm giúp so sánh dễ dàng hơn.
Hãy so sánh tiền tip theo cả ngày và thời điểm bữa ăn dùng tham số hue như dưới đây:
# Load the tips dataset if you haven't alreadyimport seaborn as sns
tips = sns.load_dataset("tips")# Create a grouped barplot showing tips by day and time
sns.barplot(
data=tips,
x="day",
y="tip",
hue="time")Được hỗ trợ bởi
Output:
Biểu đồ trên hiển thị hai cột - một cho bữa trưa và một cho bữa tối. Việc nhóm này giúp ta thấy không chỉ tiền tip thay đổi theo ngày mà còn khác biệt giữa các thời điểm bữa ăn.
Tạo seaborn stacked barplot
Barplot xếp chồng (stacked) rất tốt để thể hiện thành phần của các hạng mục khác nhau. Dù Seaborn không có hàm stacked barplot trực tiếp, ta có thể kết hợp với matplotlib để tạo trực quan hóa xếp chồng hiệu quả.
Cách tiếp cận này tận dụng chức năng thống kê của Seaborn đồng thời dùng khả năng xếp chồng của matplotlib. Ví dụ, trong dataset tips, hãy xem tiền tip được phân bổ giữa người hút thuốc và không hút thuốc theo các ngày như thế nào.
Bắt đầu bằng cách import các thư viện cần thiết cho trực quan hóa:
# Import required librariesimport seaborn as sns
import matplotlib.pyplot as plt
import numpy as npĐược hỗ trợ bởi
Giờ chúng ta sẽ nạp dataset chứa thông tin tiền tip nhà hàng:
# Load the tips dataset
tips = sns.load_dataset("tips")Được hỗ trợ bởi
Chúng ta sẽ tạo một figure với kích thước phù hợp cho trực quan hóa:
# Create figure and axis
plt.figure(figsize=(10,4))Được hỗ trợ bởi
Tiếp theo, chúng ta sẽ tính tiền tip trung bình cho người hút thuốc và không hút thuốc theo các ngày:
# Calculate values for stacking# Filter smokers, group by day and get mean tips
smoker_means = tips[tips['smoker']=='Yes'].groupby('day')['tip'].mean()# Filter non-smokers, group by day and get mean tips
non_smoker_means = tips[tips['smoker']=='No'].groupby('day')['tip'].mean()Được hỗ trợ bởi
Tiếp theo, chúng ta sẽ thiết lập các tham số cơ bản cho các cột xếp chồng như sau:
# Plot the stacked bars using matplotlib
days = smoker_means.index
width =0.8Được hỗ trợ bởi
Giờ, chúng ta sẽ tạo lớp dưới của các cột xếp chồng cho nhóm không hút thuốc:
Biểu đồ thu được cho thấy tiền tip trung bình của người hút thuốc được xếp chồng lên trên tiền tip của người không hút thuốc cho mỗi ngày, giúp dễ so sánh cả tổng tiền tip và đóng góp của từng nhóm.
Giải pháp này cho phép chúng ta:
Giữ phong cách trực quan hấp dẫn của Seaborn
Xếp chồng các cột để thể hiện thành phần
Duy trì tính chất thống kê của trực quan hóa
Sử dụng bảng màu của Seaborn để đồng nhất
Tính Năng Nâng Cao và Mẹo
Sau khi đã bao quát phần cơ bản và tùy biến, hãy xem một số tính năng nâng cao giúp barplot nhiều thông tin và chuyên nghiệp hơn. Chúng ta sẽ tiếp tục dùng dataset tips để minh họa các kỹ thuật này.
Chú thích trên barplot
Thêm nhãn giá trị lên cột có thể giúp trực quan hóa chính xác và nhiều thông tin hơn. Hãy tạo barplot hiển thị giá trị tip chính xác phía trên mỗi cột.
Trước hết, hãy import thư viện và chuẩn bị dữ liệu:
# Import required librariesimport seaborn as sns
import matplotlib.pyplot as plt
# Load and prepare the tips dataset
tips = sns.load_dataset("tips")Được hỗ trợ bởi
Tạo barplot với giá trị thống kê:
# Create the basic barplot
ax = sns.barplot(data=tips, x="day", y="tip”, errorbar=None)# Create barplot and store the axes object for annotationsĐược hỗ trợ bởi
Tiếp theo, chúng ta sẽ thêm nhãn giá trị lên đỉnh mỗi cột như sau:
# Get the height of each bar
bars = ax.containers[0]# Get the bar container object
heights =[bar.get_height()for bar in bars]# Extract height of each bar# Add text annotations on top of each barfor bar, height inzip(bars, heights):# Loop through bars and heights together
ax.text(
bar.get_x()+ bar.get_width()/2.,# X position (center of bar)
height,# Y position (top of bar)f'${height:.2f}',# Text (format as currency)
ha='center',# Horizontal alignment
va='bottom'# Vertical alignment)Được hỗ trợ bởi
Output:
Quản lý trục và thang đo
Khi tạo barplot, điều chỉnh trục giúp dữ liệu dễ đọc và hiệu quả hơn. Hãy xem cách tùy biến giới hạn trục, nhãn và vạch chia bằng các hàm của Seaborn.
Trước tiên, chúng ta sẽ import thư viện và nạp dataset cần cho trực quan hóa:
# Import required librariesimport seaborn as sns
# Load and prepare the tips dataset
tips = sns.load_dataset("tips")Được hỗ trợ bởi
Chúng ta có thể tạo barplot với nhãn trục và thứ tự ngày tùy chỉnh. Tham số order cho phép chỉ định chính xác cách sắp xếp ngày trên trục x:
# Create barplot with axis labels
ax = sns.barplot(
data=tips,
x="day",
y="tip",
order=['Thur','Sat', ‘Fri', 'Sun']# Set custom order for days)Được hỗ trợ bởi
Để biểu đồ nhiều thông tin hơn, ta có thể thêm nhãn mô tả cho cả hai trục bằng phương thức set:
# Set descriptive axis labels
ax.set(
xlabel='Day of Week',
ylabel='Average Tip ($)')Được hỗ trợ bởi
Để tinh chỉnh trực quan hóa, ta có thể đặt giới hạn và vạch chia cụ thể. Tham số ylim kiểm soát phạm vi trục y, trong khi xticks và yticks cho phép xác định chính xác vị trí vạch chia mong muốn:
# Customize axis limits and ticks
ax.set(
ylim=(0,5),# Set y-axis range from 0 to 5
xticks=range(4),# Set x-axis tick positions
yticks=[0,1,2,3,4,5]# Set specific y-axis tick values)Được hỗ trợ bởi
Để áp dụng tất cả thay đổi vào biểu đồ, chúng ta cần chạy cùng lúc chứ không riêng lẻ. Toàn bộ mã như dưới đây:
# Import required librariesimport seaborn as sns
# Load and prepare the tips dataset
tips = sns.load_dataset("tips")# Create barplot with axis labels
ax = sns.barplot(
data=tips,
x="day",
y="tip",
order=['Thur','Sat','Fri','Sun']# Set custom order for days)# Set descriptive axis labels
ax.set(
xlabel='Day of Week',
ylabel='Average Tip ($)')# Customize axis limits and ticks
ax.set(
ylim=(0,5),# Set y-axis range from 0 to 5
xticks=range(4),# Set x-axis tick positions
yticks=[0,1,2,3,4,5]# Set specific y-axis tick values)Được hỗ trợ bởi
Output:
Biểu đồ kết quả hiển thị tiền tip theo ngày với nhãn rõ ràng, thang đo phù hợp và vạch chia được sắp xếp hợp lý, giúp dễ đọc và diễn giải dữ liệu.
Thêm thanh sai số
Thanh sai số giúp trực quan hóa độ bất định hoặc biến thiên trong dữ liệu. Seaborn cung cấp nhiều lựa chọn thêm thanh sai số vào barplot, bao gồm khoảng tin cậy và độ lệch chuẩn.
Trước hết, chúng ta sẽ import thư viện và nạp dataset cần cho trực quan hóa:
# Import required librariesimport seaborn as sns
# Load and prepare the tips dataset
tips = sns.load_dataset("tips")Được hỗ trợ bởi
Theo mặc định, Seaborn hiển thị khoảng tin cậy 95%. Ta có thể thay đổi bằng tham số 'errorbar' để hiển thị các ước lượng thống kê khác:
# Create barplot with confidence intervals
ax = sns.barplot(
data=tips,
x="day",
y="tip",
errorbar="ci",# Show confidence interval
capsize=0.1# Add small caps to error bars)Được hỗ trợ bởi
Output:
Chúng ta cũng có thể hiển thị độ lệch chuẩn thay vì khoảng tin cậy, giúp trực quan hóa độ phân tán dữ liệu:
# Switch to standard deviation
ax = sns.barplot(
data=tips,
x="day",
y="tip",
errorbar="sd",# Show standard deviation
capsize=0.1# Add small caps to error bars)Được hỗ trợ bởi
Output:
Đôi khi, chúng ta có thể muốn loại bỏ hoàn toàn thanh sai số để có giao diện sạch hơn:
# Create barplot without error bars
ax = sns.barplot(
data=tips,
x="day",
y="tip",
errorbar=None# Remove error bars)Được hỗ trợ bởi
Output:
Các biểu đồ thu được cho thấy cách các loại thanh sai số khác nhau giúp chúng ta hiểu mức biến thiên của dữ liệu tip theo các ngày trong tuần.
Ứng Dụng Thực Tiễn của Seaborn Barplot
Barplot là công cụ linh hoạt trong trực quan hóa dữ liệu, đặc biệt hữu ích khi cần so sánh giá trị giữa các hạng mục khác nhau hoặc phân tích đồng thời nhiều biến. Hãy xem hai ứng dụng phổ biến nơi Seaborn barplot vượt trội.
Trực quan hóa xu hướng dữ liệu phân loại
Barplot trong Seaborn rất hiệu quả trong việc hé lộ mẫu của dữ liệu phân loại, đặc biệt khi phân tích chỉ số theo các nhóm khác nhau. Bằng cách hiển thị cả xu hướng trung tâm và độ bất định, barplot giúp xác định khác biệt đáng kể giữa các hạng mục.
Điều này khiến chúng lý tưởng để phân tích hành vi khách hàng, hiệu suất sản phẩm hoặc phản hồi khảo sát khi cần so sánh giá trị giữa các nhóm riêng biệt.
So sánh nhiều biến
Khi phân tích liên quan đến nhiều yếu tố, barplot của Seaborn có thể làm nổi bật những mối quan hệ phức tạp trong dữ liệu. Sử dụng các tính năng như nhóm (hue) hoặc xếp chồng giúp so sánh đồng thời các biến khác nhau, khiến việc phát hiện mẫu và tương tác giữa các khía cạnh dữ liệu trở nên dễ dàng hơn.
Kết luận
Barplot trong Seaborn cân bằng hợp lý giữa sự đơn giản và insight thống kê. Cú pháp trực quan của thư viện kết hợp với các tính năng thống kê vững chắc khiến nó trở thành công cụ thiết yếu cho trực quan hóa dữ liệu. Từ so sánh hạng mục cơ bản đến trực quan hóa nhóm nâng cao, barplot giúp khám phá và truyền đạt mẫu dữ liệu hiệu quả.
Sẵn sàng nâng tầm kỹ năng trực quan hóa dữ liệu? Hãy khám phá tiếp những nội dung sau:
Tôi là một biên tập viên nội dung về khoa học dữ liệu. Tôi yêu thích sáng tạo nội dung xoay quanh các chủ đề AI/ML/DS. Tôi cũng khám phá các công cụ AI mới và viết về chúng.
Nâng cao kỹ năng lập trình Python của quý vị. Học cách làm việc với các mô-đun và gói, làm việc với các kiểu dữ liệu tích hợp sẵn và viết các hàm tùy chỉnh.
Trực quan hóa dữ liệu biến thông tin phức tạp thành những insight rõ ràng, có thể hành động. Barplot trong Seaborn vượt trội khi trình bày dữ liệu phân loại thông qua đồ họa thống kê tinh gọn, đẹp mắt. Thư viện kết hợp tính linh hoạt của Matplotlib với sức mạnh của pandas, rất phù hợp cho cả phân tích nhanh lẫn trực quan hóa sẵn sàng xuất bản.
Barplot của Seaborn cung cấp các tính năng thiết yếu cho phân tích dữ liệu - từ so sánh cơ bản đến biểu diễn thống kê nâng cao. Chúng xử lý tốt các tác vụ phổ biến như so sánh chỉ số bán hàng theo vùng, phân tích phản hồi khảo sát và trực quan hóa kết quả thí nghiệm.
Cú pháp trực quan và các hàm thống kê tích hợp khiến thư viện này hữu ích cho cả người mới bắt đầu lẫn người làm dữ liệu nhiều kinh nghiệm.
Trong bài viết này, chúng ta sẽ xem qua những điều cơ bản về barplot trong Seaborn, tạo biểu đồ cơ bản với ví dụ mã, nâng cấp biểu đồ qua tùy biến, triển khai các tính năng nâng cao và khám phá các ứng dụng thực tiễn.
Để tìm hiểu thêm về trực quan hóa dữ liệu với Seaborn, hãy xem khóa học Giới thiệu Trực quan hóa Dữ liệu với Seaborn của chúng tôi.
Những điều cơ bản về Seaborn barplot
Trước khi đi vào barplot, hãy điểm qua một số nền tảng của Seaborn, lợi thế của nó cho barplot và cách thiết lập môi trường mã hóa.
Seaborn là gì?
Seaborn là thư viện trực quan hóa dữ liệu thống kê bằng Python, xây dựng trên Matplotlib. Nó chuyên tạo các đồ họa thống kê giàu thông tin và hấp dẫn với lượng mã tối thiểu. Thư viện tích hợp chặt chẽ với pandas DataFrame, giúp đặc biệt hiệu quả cho quy trình phân tích dữ liệu.
Nó cung cấp giao diện bậc cao để vẽ biểu đồ bắt mắt, đồng thời tự động xử lý nhiều chi tiết về phong cách.
Thư viện nổi trội ở ba khía cạnh chính:
Ví dụ, trong khi Matplotlib cần nhiều dòng mã để tạo một trực quan hóa thống kê cơ bản, Seaborn có thể hoàn thành cùng tác vụ chỉ với một lời gọi hàm.
Riêng với barplot, Seaborn bổ sung các tính năng mạnh như tính trung bình tự động, khoảng tin cậy và xử lý biến phân loại nâng cao - những khả năng mà nếu dùng Matplotlib thuần sẽ cần nhiều mã bổ sung đáng kể.
Vì sao dùng barplot?
Barplot trình bày dữ liệu phân loại bằng các cột dọc hoặc ngang, với độ dài biểu thị giá trị số. Điều này khiến chúng lý tưởng để so sánh giá trị giữa các nhóm hoặc hạng mục khác nhau. Trong phân tích dữ liệu, barplot giúp trực quan hóa kết quả khảo sát, thị phần, chỉ số hiệu suất và phân bố doanh số.
Các ưu điểm chính gồm:
Thiết lập nhanh
Để bắt đầu tạo barplot với Seaborn, chúng ta cần thiết lập môi trường Python. Cách bắt đầu như sau:
Đầu tiên, hãy cài đặt các gói cần thiết như bên dưới:
Giờ đây chúng ta đã sẵn sàng bộ công cụ trực quan hóa. Hãy import các thư viện cần dùng như sau:
Chúng ta có thể làm biểu đồ trông đẹp hơn với một số thiết lập phong cách như sau:
Kiểu
whiteloại bỏ đường lưới và sẽ giúp biểu đồ hiển thị đẹp trên hầu hết màn hình. Ở các phần tiếp theo, chúng ta sẽ xem cách tạo barplot và nâng cấp chúng.Tạo Seaborn Barplot Cơ Bản
Barplot rất phù hợp để trực quan hóa mối quan hệ giữa biến phân loại và biến số. Nó hiển thị ước lượng điểm (như trung bình hoặc trung vị) và độ bất định xung quanh các ước lượng đó qua thanh sai số. Hãy xem cú pháp cơ bản của seaborn barplot.
Cú pháp và tham số
Hàm sns.barplot() trong Seaborn cung cấp cách trực tiếp để tạo barplot thống kê. Cấu trúc cơ bản của hàm .barplot() như dưới đây:
Các tham số này cho chúng ta quyền kiểm soát dữ liệu hiển thị và cách hiển thị. Tham số
datanhận DataFrame của bạn, trong khi x và y chỉ định cột dùng cho hạng mục và giá trị.estimatorcho phép chọn hàm thống kê áp dụng (mặc định là trung bình), vàerrorbarkiểm soát cách hiển thị độ bất định. Bạn cũng có thể chuyển giữa hướng dọc và ngang bằng tham sốorient.Giờ hãy xem cách tạo barplot hiệu quả bằng dataset tips tích hợp của Seaborn, chứa thông tin về hóa đơn và tiền tip ở nhà hàng.
Ví dụ: Trực quan hóa một tập dữ liệu đơn giản
Chúng ta sẽ xem hành vi tip theo các ngày trong tuần bằng dataset tips. Dataset này chứa thông tin về hóa đơn nhà hàng, bao gồm ngày trong tuần, tổng hóa đơn, tiền tip và các biến khác.
Output:
Đoạn mã đã tạo trực quan hóa ở trên, trong đó mỗi cột biểu diễn tiền tip trung bình cho một ngày trong tuần. Chiều cao mỗi cột thể hiện giá trị tip trung bình, còn các đường đen (thanh sai số) cho biết khoảng tin cậy 95% - giúp ta hiểu cả mức tip điển hình lẫn mức biến thiên.
Chúng ta cũng có thể xem mẫu tip theo các thời điểm bữa ăn khác nhau:
Output:
Biểu đồ này cho thấy sự khác biệt hành vi tip giữa bữa trưa và bữa tối. Chiều cao mỗi cột biểu diễn tiền tip trung bình cho thời điểm đó trong ngày, với thanh sai số cho thấy độ biến thiên hành vi tip. Dạng trực quan này giúp dễ dàng nhận ra mẫu và so sánh nhóm trong nháy mắt.
Những barplot cơ bản này tạo nền tảng cho các trực quan hóa phức tạp hơn. Ở phần tiếp theo, chúng ta sẽ xem cách nâng cấp các biểu đồ với màu sắc, nhóm và các tùy biến khác để tạo trực quan hóa nhiều thông tin và thu hút hơn.
Nâng Cấp Barplot với Tùy Biến
Thêm yếu tố trực quan vào barplot có thể giúp dữ liệu hấp dẫn hơn và dễ hiểu hơn. Hãy xem các cách khác nhau để tùy biến barplot sử dụng dataset tips.
Thêm màu cho barplot
Seaborn cung cấp nhiều cách để thêm màu vào barplot, giúp chúng trực quan hơn và giàu thông tin hơn. Chúng ta có thể dùng một màu cho tất cả cột hoặc tạo nhóm mã màu,
Tham số
colorđặt một màu duy nhất cho tất cả cột, trong khipalettecho phép bạn chỉ định bảng màu khi dữ liệu có nhiều nhóm. Seaborn có sẵn nhiều bảng màu phù hợp với các loại dữ liệu khác nhau.Chúng ta có thể tạo barplot đơn giản với một màu bằng tham số
colornhư sau:Output:
Chúng ta có thể tạo barplot với nhiều màu bằng tham số palette như sau:
Output:
Seaborn barplot với nhiều cột
Một trong những tính năng mạnh nhất của barplot Seaborn là khả năng hiển thị mối quan hệ giữa nhiều biến bằng tham số
hue. Điều này tạo các cột theo nhóm giúp so sánh dễ dàng hơn.Hãy so sánh tiền tip theo cả ngày và thời điểm bữa ăn dùng tham số
huenhư dưới đây:Output:
Biểu đồ trên hiển thị hai cột - một cho bữa trưa và một cho bữa tối. Việc nhóm này giúp ta thấy không chỉ tiền tip thay đổi theo ngày mà còn khác biệt giữa các thời điểm bữa ăn.
Tạo seaborn stacked barplot
Barplot xếp chồng (stacked) rất tốt để thể hiện thành phần của các hạng mục khác nhau. Dù Seaborn không có hàm stacked barplot trực tiếp, ta có thể kết hợp với matplotlib để tạo trực quan hóa xếp chồng hiệu quả.
Cách tiếp cận này tận dụng chức năng thống kê của Seaborn đồng thời dùng khả năng xếp chồng của matplotlib. Ví dụ, trong dataset tips, hãy xem tiền tip được phân bổ giữa người hút thuốc và không hút thuốc theo các ngày như thế nào.
Bắt đầu bằng cách import các thư viện cần thiết cho trực quan hóa:
Giờ chúng ta sẽ nạp dataset chứa thông tin tiền tip nhà hàng:
Chúng ta sẽ tạo một figure với kích thước phù hợp cho trực quan hóa:
Tiếp theo, chúng ta sẽ tính tiền tip trung bình cho người hút thuốc và không hút thuốc theo các ngày:
Tiếp theo, chúng ta sẽ thiết lập các tham số cơ bản cho các cột xếp chồng như sau:
Giờ, chúng ta sẽ tạo lớp dưới của các cột xếp chồng cho nhóm không hút thuốc:
Chúng ta sẽ thêm lớp trên cho tiền tip của người hút thuốc:
Hãy đặt phong cách sạch sẽ không đường lưới bằng styling của seaborn:
Cuối cùng, chúng ta sẽ hiển thị stacked barplot đã hoàn thành:
Output:
Biểu đồ thu được cho thấy tiền tip trung bình của người hút thuốc được xếp chồng lên trên tiền tip của người không hút thuốc cho mỗi ngày, giúp dễ so sánh cả tổng tiền tip và đóng góp của từng nhóm.
Giải pháp này cho phép chúng ta:
Tính Năng Nâng Cao và Mẹo
Sau khi đã bao quát phần cơ bản và tùy biến, hãy xem một số tính năng nâng cao giúp barplot nhiều thông tin và chuyên nghiệp hơn. Chúng ta sẽ tiếp tục dùng dataset tips để minh họa các kỹ thuật này.
Chú thích trên barplot
Thêm nhãn giá trị lên cột có thể giúp trực quan hóa chính xác và nhiều thông tin hơn. Hãy tạo barplot hiển thị giá trị tip chính xác phía trên mỗi cột.
Trước hết, hãy import thư viện và chuẩn bị dữ liệu:
Tạo barplot với giá trị thống kê:
Tiếp theo, chúng ta sẽ thêm nhãn giá trị lên đỉnh mỗi cột như sau:
Output:
Quản lý trục và thang đo
Khi tạo barplot, điều chỉnh trục giúp dữ liệu dễ đọc và hiệu quả hơn. Hãy xem cách tùy biến giới hạn trục, nhãn và vạch chia bằng các hàm của Seaborn.
Trước tiên, chúng ta sẽ import thư viện và nạp dataset cần cho trực quan hóa:
Chúng ta có thể tạo barplot với nhãn trục và thứ tự ngày tùy chỉnh. Tham số
ordercho phép chỉ định chính xác cách sắp xếp ngày trên trục x:Để biểu đồ nhiều thông tin hơn, ta có thể thêm nhãn mô tả cho cả hai trục bằng phương thức
set:Để tinh chỉnh trực quan hóa, ta có thể đặt giới hạn và vạch chia cụ thể. Tham số
ylimkiểm soát phạm vi trục y, trong khixticksvàytickscho phép xác định chính xác vị trí vạch chia mong muốn:Để áp dụng tất cả thay đổi vào biểu đồ, chúng ta cần chạy cùng lúc chứ không riêng lẻ. Toàn bộ mã như dưới đây:
Output:
Biểu đồ kết quả hiển thị tiền tip theo ngày với nhãn rõ ràng, thang đo phù hợp và vạch chia được sắp xếp hợp lý, giúp dễ đọc và diễn giải dữ liệu.
Thêm thanh sai số
Thanh sai số giúp trực quan hóa độ bất định hoặc biến thiên trong dữ liệu. Seaborn cung cấp nhiều lựa chọn thêm thanh sai số vào barplot, bao gồm khoảng tin cậy và độ lệch chuẩn.
Trước hết, chúng ta sẽ import thư viện và nạp dataset cần cho trực quan hóa:
Theo mặc định, Seaborn hiển thị khoảng tin cậy 95%. Ta có thể thay đổi bằng tham số 'errorbar' để hiển thị các ước lượng thống kê khác:
Output:
Chúng ta cũng có thể hiển thị độ lệch chuẩn thay vì khoảng tin cậy, giúp trực quan hóa độ phân tán dữ liệu:
Output:
Đôi khi, chúng ta có thể muốn loại bỏ hoàn toàn thanh sai số để có giao diện sạch hơn:
Output:
Các biểu đồ thu được cho thấy cách các loại thanh sai số khác nhau giúp chúng ta hiểu mức biến thiên của dữ liệu tip theo các ngày trong tuần.
Ứng Dụng Thực Tiễn của Seaborn Barplot
Barplot là công cụ linh hoạt trong trực quan hóa dữ liệu, đặc biệt hữu ích khi cần so sánh giá trị giữa các hạng mục khác nhau hoặc phân tích đồng thời nhiều biến. Hãy xem hai ứng dụng phổ biến nơi Seaborn barplot vượt trội.
Trực quan hóa xu hướng dữ liệu phân loại
Barplot trong Seaborn rất hiệu quả trong việc hé lộ mẫu của dữ liệu phân loại, đặc biệt khi phân tích chỉ số theo các nhóm khác nhau. Bằng cách hiển thị cả xu hướng trung tâm và độ bất định, barplot giúp xác định khác biệt đáng kể giữa các hạng mục.
Điều này khiến chúng lý tưởng để phân tích hành vi khách hàng, hiệu suất sản phẩm hoặc phản hồi khảo sát khi cần so sánh giá trị giữa các nhóm riêng biệt.
So sánh nhiều biến
Khi phân tích liên quan đến nhiều yếu tố, barplot của Seaborn có thể làm nổi bật những mối quan hệ phức tạp trong dữ liệu. Sử dụng các tính năng như nhóm (hue) hoặc xếp chồng giúp so sánh đồng thời các biến khác nhau, khiến việc phát hiện mẫu và tương tác giữa các khía cạnh dữ liệu trở nên dễ dàng hơn.
Kết luận
Barplot trong Seaborn cân bằng hợp lý giữa sự đơn giản và insight thống kê. Cú pháp trực quan của thư viện kết hợp với các tính năng thống kê vững chắc khiến nó trở thành công cụ thiết yếu cho trực quan hóa dữ liệu. Từ so sánh hạng mục cơ bản đến trực quan hóa nhóm nâng cao, barplot giúp khám phá và truyền đạt mẫu dữ liệu hiệu quả.
Sẵn sàng nâng tầm kỹ năng trực quan hóa dữ liệu? Hãy khám phá tiếp những nội dung sau:
Muốn nâng tầm kỹ năng Seaborn? Hãy đăng ký Intermediate Data Visualization with Seaborn course.