{count, plural, one {Khóa học} other {Khóa học}}
Trong bài viết này, tôi sẽ giới thiệu về biểu đồ cột trong Python bằng các thư viện phổ biến nhất—Matplotlib, Seaborn, Plotly, Plotnine và Pandas. Bạn có thể xem lướt qua các hình minh họa và chọn thư viện mình thích nhất. Với mỗi phương pháp, tôi sẽ bắt đầu từ cơ bản với các biểu đồ cột đơn giản, rồi dần dần chuyển sang các kỹ thuật tùy biến.
Tôi sẽ trình bày đầy đủ và rõ ràng nhất có thể, nhưng hãy nhớ rằng trong phân tích và khoa học dữ liệu, biểu đồ cột chỉ là một phần. Để có cái nhìn toàn diện và luyện tập với dữ liệu thực, nhận chứng chỉ được săn đón và bắt đầu sự nghiệp trong lĩnh vực này, hãy đăng ký lộ trình nghề nghiệp Associate Data Scientist in Python của chúng tôi ngay hôm nay.
Các cách tạo biểu đồ cột trong Python
Hãy xem cách tạo và tùy chỉnh biểu đồ cột bằng một số thư viện Python phổ biến nhất. Mỗi thư viện có đặc trưng riêng và mức độ tùy biến khác nhau.
Tạo biểu đồ cột với Matplotlib
Tôi sẽ bắt đầu với Matplotlib, một thư viện nền tảng trong Python với rất nhiều tùy chọn tùy chỉnh.
Biểu đồ cột cơ bản
Để bắt đầu với Matplotlib, bạn cần import các thư viện cần thiết. Mô-đun pyplot của Matplotlib cung cấp các hàms cho tạo biểu đồ. Trong ví dụ này, chúng ta dùng dữ liệu mẫu thể hiện số người ưa thích các thư viện trực quan khác nhau. Ở đây, danh sách library chứa tên các thư viện, sẽ hiển thị làm nhãn trên trục x, và danh sách chosen_by chứa số lượng người hâm mộ tương ứng, hiển thị làm chiều cao cột trên trục y.
import matplotlib.pyplot as plt
# Number of preferences for different libraries
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
chosen_by = [2500, 1800, 3000, 2200]
Tạo biểu đồ cột dọc bằng cách gọi hàm plt.bar() với tên thư viện và dữ liệu. Tôi chọn màu skyblue. Các hàm plt.xlabel(), plt.ylabel() và plt.title() thêm nhãn trục x, trục y và tiêu đề cho biểu đồ. Cuối cùng, plt.show() hiển thị biểu đồ.
# Vertical Bar Plot
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

Tương tự, bạn có thể tạo biểu đồ cột ngang bằng hàm plt.barh(). Ở đây, tôi dùng màu xanh lá nhạt cho các cột.
# Horizontal Bar Plot
plt.barh(library, chosen_by, color='lightgreen')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

Tùy biến nâng cao
Matplotlib cho phép nhiều tùy biến như thêm chú thích và tùy chỉnh nhãn trục, tiêu đề, chú giải. Ví dụ, bạn có thể thêm chú thích cho từng cột bằng hàm plt.text(), đặt văn bản tại tọa độ chỉ định.
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
# Adding annotations
for i, value in enumerate(chosen_by):
plt.text(i, value + 5, str(value), ha='center')
plt.show()

Trong đoạn mã trên, plt.text() được dùng để hiển thị số người hâm mộ phía trên mỗi cột. Hàm enumerate() cung cấp chỉ số và giá trị của từng cột, giúp đặt văn bản đúng vị trí.
Biểu đồ cột nhóm và chồng
Để tạo biểu đồ cột nhóm và cột chồng với Matplotlib, bạn có thể dùng thêm tham số để thể hiện nhiều nhóm, như vùng miền hay nhân khẩu học. Giả sử bạn có dữ liệu về mức độ phổ biến của các thư viện trực quan ở các vùng khác nhau. Với biểu đồ cột nhóm, bạn định nghĩa dữ liệu riêng cho mỗi vùng và dùng bar_width để kiểm soát khoảng cách, căn chỉnh các cột, đặt từng nhóm cạnh nhau để so sánh dễ dàng.
import numpy as np
# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
bar_width = 0.35
x = np.arange(len(library))
# Grouped Bar Plot
plt.bar(x - bar_width/2, enthusiasts_north, bar_width, label='North Region', color='skyblue')
plt.bar(x + bar_width/2, enthusiasts_south, bar_width, label='South Region', color='lightgreen')
# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Grouped)')
plt.xticks(x, library)
plt.legend(title='Regions')
plt.show()

Trong ví dụ này, dòng x = np.arange(len(library)) tạo một mảng vị trí cho các cột. Hàm plt.bar() được gọi hai lần để tạo cột cho mỗi vùng, và plt.xticks() đặt nhãn trên trục x. Hàm plt.legend() hiển thị chú giải để phân biệt các vùng.
Với biểu đồ cột chồng, bạn có thể dùng tham số bottom để chồng một bộ dữ liệu lên bộ khác. Đây là cách trực quan hóa số người hâm mộ từ các vùng khác nhau được chồng lên nhau theo từng thư viện.
# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
x = np.arange(len(library))
# Stacked Bar Plot
plt.bar(x, enthusiasts_north, label='North Region', color='skyblue')
plt.bar(x, enthusiasts_south, bottom=enthusiasts_north, label='South Region', color='lightcoral')
# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Stacked)')
plt.legend()
plt.show()

Trong biểu đồ cột chồng này, enthusiasts_south biểu diễn dữ liệu của vùng Nam, còn enthusiasts_north là dữ liệu nền cho vùng Bắc. Hàm plt.bra() được gọi một lần để tạo cột cho vùng Bắc, rồi gọi lại để chồng cột của vùng Nam lên trên.
Bạn có thể xem khóa học Introduction to Data Visualization with Matplotlib của chúng tôi để có giải thích chi tiết hơn về cách dùng thư viện Matplotlib. Ngoài ra còn có Matplotlib Cheat Sheet, tóm lược quy trình thành sáu bước cơ bản.
Tạo biểu đồ cột với Seaborn
Seaborn là thư viện trực quan hóa xây dựng trên Matplotlib, giúp tạo biểu đồ cột rất đẹp mắt một cách đơn giản.
Biểu đồ cột cơ bản
Hàm barplot() của Seaborn giúp tạo biểu đồ cột cơ bản với rất ít mã. Trước hết, import Seaborn và tạo một dictionary.
import seaborn as sns
data = {'Library': library, 'Chosen by': chosen_by}
Sau đó, dùng sns.barplot() để tạo biểu đồ cột, chỉ định biến x, y và nguồn dữ liệu. Ở đây, tôi dùng bảng màu viridis.
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Bạn có thể không đặt giá trị cho palette để có màu đồng nhất, hoặc tốt hơn là gán một màu cho biểu đồ cột. Ở đây, tôi sẽ dùng mã hex:
sns.barplot(x='Library', y='Chosen by', data=data, color=’#5EB1FF’)
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Tùy biến nâng cao
Dĩ nhiên Seaborn cũng hỗ trợ tùy biến sâu, bao gồm màu sắc và chú thích. Chẳng hạn, bạn có thể thêm chú thích tương tự như với Matplotlib.
# Customized Bar Plot
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
# Adding annotations
for i, value in enumerate(chosen_by):
plt.text(i, value + 5, str(value), ha='center')
plt.show()

Trong ví dụ này, tham số palette='viridis' thay đổi bảng màu của các cột, và hàm plt.text() thêm chú thích lên mỗi cột.
Bạn có thể tham khảo khóa học Introduction to Data Visualization with Seaborn để biết thêm chi tiết. Để biểu đồ Seaborn trông đẹp hơn, hãy dùng Seaborn Color Palette: Quick Guide to Picking Colors để có thêm ý tưởng.
Tạo biểu đồ cột với Plotly
Tiếp theo là Plotly, một thư viện nổi tiếng trong việc tạo biểu đồ tương tác và động, bao gồm cả biểu đồ cột.
Biểu đồ cột cơ bản
Tạo biểu đồ cột cơ bản với Plotly dùng mô-đun graph_objects. Ta có thể import mô-đun cần thiết và tạo biểu đồ với màu xanh da trời cho các cột.
import plotly.graph_objects as go
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
fig.show()

Tùy biến nâng cao
Plotly cung cấp nhiều cách tăng tính tương tác và vẻ ngoài của biểu đồ cột. Ví dụ, bạn có thể thêm chú thích cho các cột bằng hàm fig.add_annotation().
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
# Adding annotations
for i, value in enumerate(chosen_by):
fig.add_annotation(x=library[i], y=value, text=str(value), showarrow=False, yshift=10)
fig.show()

Biểu đồ cột động và tương tác
Plotly có thể tạo biểu đồ cột động cập nhật thời gian thực, rất phù hợp cho dashboard. Dùng Plotly Express, giao diện cấp cao của Plotly, bạn có thể tạo biểu đồ tương tác với rất ít mã.
import plotly.express as px
# Using a sample dataset from Plotly
df = px.data.gapminder().query("year == 2007")
fig = px.bar(df, x='continent', y='pop', color='continent', hover_name='country', title='Population by Continent in 2007')
fig.show()

Trong ví dụ này, hàm px.data.gapminder() tải bộ dữ liệu mẫu từ Plotly. Hàm px.bar() tạo biểu đồ cột tương tác với các biến x, y, màu sắc, tên hover và tiêu đề được chỉ định. Chúng tôi có một khóa học chi tiết tại DataCammp nếu bạn muốn xem thêm: Introduction to Data Visualization with Plotly.
Tạo biểu đồ cột với Plotnine
Plotnine là hiện thực hóa của grammar of graphics trong Python, lấy cảm hứng từ ggplot2 của R. Nó cho phép tạo biểu đồ phức tạp theo cách khai báo bằng cách kết hợp các thành phần đồ họa.
Biểu đồ cột cơ bản
Để bắt đầu với Plotnine, hãy import các thư viện cần thiết và tạo DataFrame. Sau đó, định nghĩa đối tượng ggplot, thêm lớp geom_bar và chỉ định thẩm mỹ (aesthetics).
from plotnine import ggplot, aes, geom_bar, labs
import pandas as pd
# Number of preferences for different libraries
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
# Basic Bar Plot
ggplot(data, aes(x='Library', y='Chosen by')) + geom_bar(stat='identity', fill='skyblue') + labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts')

Trong ví dụ này, aes(x='Library', y='Chosen by') thiết lập thẩm mỹ trục x và y cho biểu đồ. Phần geom_bar(stat='identity', fill='skyblue') tạo biểu đồ cột với màu nền xanh da trời.
Tùy biến nâng cao
Bạn có thể tùy chỉnh bằng cách tiếp cận phân lớp của Plotnine. Bạn có thể thêm chú thích, nhãn trục, tiêu đề và chú giải.
from plotnine import ggplot, aes, geom_bar, geom_text, labs
# Creating our Pandas DataFrame
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
# Basic Bar Plot with labels
(ggplot(data, aes(x='Library', y='Chosen by'))
+ geom_bar(stat='identity', fill='skyblue')
+ geom_text(aes(label='Chosen by'), va='bottom', size=10, nudge_y=5) # Adds labels on top of bars
+ labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts'))

Biểu đồ cột nhóm và chồng
Plotnine cũng hỗ trợ biểu đồ cột nhóm và chồng. Với biểu đồ cột nhóm, trước tiên bạn cần xác định biến phân loại để nhóm.
# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Plotly', 'Plotnine', 'Seaborn'] * 2,
'Chosen by': [2000, 1500, 2500, 2000, 1500, 1300, 2000, 1800],
'Region': ['North', 'North', 'North', 'North', 'South', 'South', 'South', 'South']})
# Grouped Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
+ geom_bar(stat='identity', position='dodge')
+ labs(title='Regional Preferences for Visualization Libraries (Grouped)', x='Visualization Library', y='Number of Enthusiasts'))

Với biểu đồ cột chồng, bạn có thể dùng position = 'stack'.
# Stacked Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
+ geom_bar(stat='identity', position='stack')
+ labs(title='Regional Preferences for Visualization Libraries (Stacked)', x='Visualization Library', y='Number of Enthusiasts'))

Lưu ý trong các ví dụ này, position = 'dodge' tạo các cột nhóm, còn position = 'stack' sẽ chồng các cột.
Tạo biểu đồ cột với Pandas
Cuối cùng nhưng không kém phần quan trọng là Pandas. Pandas cung cấp cách thuận tiện để tạo biểu đồ cột trực tiếp từ DataFrame, nên rất nhanh và dễ cho các biểu đồ cơ bản.
Biểu đồ cột cơ bản
Để tạo biểu đồ cột trong Pandas, bạn có thể dùng hàm plot.bar() trên DataFrame.
import pandas as pd
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
Sau đó, tạo biểu đồ cột bằng plot.bar().
# Basic Bar Plot
data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Tùy biến nâng cao
Pandas cho phép tùy biến biểu đồ cột qua các tham số bổ sung và tích hợp với Matplotlib.
# Customized Bar Plot
ax = data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
ax.set_xlabel('Visualization Library')
ax.set_ylabel('Number of Enthusiasts')
# Adding annotations
for i in ax.containers:
ax.bar_label(i, label_type='edge')
plt.show()

Trong ví dụ này, ax.bar_label(i, label_type='edge') thêm chú thích lên cột, hiển thị số liệu trên đỉnh mỗi cột.
Biểu đồ cột nhóm và chồng
Tạo biểu đồ cột nhóm và chồng trong Pandas khá đơn giản. Với biểu đồ cột nhóm, bạn cần pivot DataFrame để có các cột riêng cho từng nhóm.
# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'North Region': [2000, 1500, 2500, 2000],
'South Region': [1500, 1300, 2000, 1800]})
# Grouped Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], title='Regional Preferences for Visualization Libraries (Grouped)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Với biểu đồ cột chồng, dùng stacked=True.
# Stacked Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], stacked=True, title='Regional Preferences for Visualization Libraries (Stacked)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Thực hành tốt để thiết kế biểu đồ cột Python hiệu quả
Tạo biểu đồ cột thì đơn giản, nhưng thiết kế biểu đồ cột hiệu quả và giàu thông tin đòi hỏi chú ý đến chi tiết. Các hướng dẫn sau sẽ giúp bạn tạo biểu đồ cột truyền tải câu chuyện dữ liệu của bạn một cách hiệu quả.
- Tránh lỗi thường gặp: Khi thiết kế biểu đồ cột, tránh nhồi nhét quá nhiều thông tin để giữ sự rõ ràng và hiệu quả. Chỉ giữ nội dung thiết yếu để tránh rối mắt. Dùng thang đo nhất quán trên các trục. Đảm bảo trục bắt đầu từ 0 để không gây hiểu lầm với sự khác biệt bị phóng đại.
- Chọn màu và điểm nhấn: Chọn màu mang lại ý nghĩa cho dữ liệu, như đỏ cho giá trị âm hoặc xanh lá cho giá trị dương. Duy trì bảng màu nhất quán giữa các biểu đồ liên quan để giúp người đọc theo dõi mạch nội dung. Dùng màu để thu hút chú ý đến những insight quan trọng.
- Sắp xếp cột để rõ ràng hơn: Sắp xếp các cột hợp lý theo ngữ cảnh dữ liệu, như theo thời gian với dữ liệu chuỗi thời gian, hoặc theo thứ tự tăng/giảm để nhấn mạnh xu hướng. Nhóm các cột liên quan lại với nhau và dùng màu hoặc khoảng cách để tách nhóm.
Kết luận
Thành thạo việc tạo và tùy biến biểu đồ cột là kỹ năng thiết yếu cho mọi chuyên gia dữ liệu. Bằng cách làm theo các hướng dẫn và thực hành tốt được trình bày trong bài viết này, bạn có thể tạo các biểu đồ cột rõ ràng, giàu thông tin và hấp dẫn, giúp truyền tải insight dữ liệu hiệu quả. Điều này sẽ giúp bạn trình bày dữ liệu tốt hơn và đưa ra quyết định sáng suốt hơn.
Nếu bạn muốn tiếp tục luyện tập kỹ năng trực quan hóa dữ liệu bằng Python, hãy xem khóa học Intro to Python for Data Science, điểm khởi đầu cho người mới, hoặc tham khảo lộ trình kỹ năng Python Programming cung cấp lộ trình toàn diện để làm chủ Python.
Chuyên gia dữ liệu và tác giả dày dạn kinh nghiệm, đam mê hỗ trợ những người đang theo đuổi con đường trở thành chuyên gia trong lĩnh vực dữ liệu.
Câu hỏi thường gặp về biểu đồ cột Python
Biểu đồ cột Python là gì và tại sao nó hữu ích?
Biểu đồ cột biểu diễn dữ liệu phân loại bằng các hình chữ nhật, trong đó chiều dài hoặc chiều cao tương ứng với giá trị của hạng mục. Nó hữu ích để so sánh các hạng mục, trực quan hóa phân phối và phát hiện xu hướng hoặc giá trị ngoại lai.
Tôi nên chọn biểu đồ cột dọc hay ngang trong Python như thế nào?
Bạn có thể dùng biểu đồ cột dọc cho nhãn ngắn hoặc dễ đọc, còn chọn biểu đồ cột ngang cho nhãn dài hoặc nhiều hạng mục để tránh rối mắt.
Làm thế nào để tùy chỉnh màu của các cột trong biểu đồ?
Bạn có thể tùy chỉnh màu cột để biểu đồ hấp dẫn hơn hoặc khớp một bảng màu cụ thể. Trong Matplotlib, dùng tham số color:
plt.bar(categories, values, color=['red', 'green', 'blue'])
plt.show()
Làm sao dùng Python để sắp xếp các cột trong biểu đồ cột?
Sắp xếp các cột có thể giúp làm nổi bật các hạng mục quan trọng nhất hoặc ít quan trọng nhất. Bạn có thể sắp xếp dữ liệu trước khi vẽ:
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
df = pd.DataFrame(data).sort_values(by='Value', ascending=False)
plt.bar(df['Category'], df['Value'])
plt.show()Tôi có thể tạo biểu đồ cột Python tương tác với Plotly không?
Có, Plotly cho phép bạn tạo biểu đồ cột tương tác. Đây là một ví dụ dùng Plotly Express:
import plotly.express as px
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
fig = px.bar(data, x='Category', y='Value', title='Interactive Bar Plot')
fig.show()