Việc sử dụng Python để vẽ biểu đồ không chỉ là hiệu quả mà còn là một cách thú vị để trình bày dữ liệu. Với python chúng ta có thể custom chart theo như mình mong muốn. Trong bài viết này, chúng ta sẽ khám phá một số tips hữu ích để tạo ra những biểu đồ đẹp và ấn tượng bằng Python.
Chọn thư viện phù hợp
Python cung cấp nhiều thư viện hữu ích cho việc vẽ biểu đồ, như Matplotlib, Seaborn, Plotly. Tùy thuộc vào nhu cầu và kiểu dữ liệu, bạn có thể chọn thư viện phù hợp để tối ưu hóa quá trình vẽ biểu đồ. Mình thường hay dùng Seaborn và matplotlib để vẽ, nếu bạn muốn vẽ biểu đồ động thì dùng thêm Plotly nè.
import thư viện trước khi vẽ
import matplotlib.pyplot as plt
import seaborn as sns
Lựa chọn kiểu chart
Có nhiều loại đồ thị khác nhau như line chart, bar chart, pie chart. Chọn loại đồ thị phù hợp với dữ liệu và thông điệp bạn muốn truyền đạt. Việc lựa chọn đồ thị cũng giúp cho bạn có biểu đồ đẹp và người xem có thể dễ dàng hiểu ý của bạn hơn.
# Ví dụ: Line chart
plt.plot(x, y, label='Dữ liệu 1', marker='o')
plt.xlabel('Trục X')
plt.ylabel('Trục Y')
plt.title('Biểu Đồ Line Chart')
plt.legend()
plt.show()
đoạn code này làm cho việc vẽ và hiển thị biểu đồ đường trở nên dễ dàng và tự nhiên trong Python, giúp hiểu rõ hơn về xu hướng hoặc mối quan hệ giữa các điểm dữ liệu trên trục x và trục y.
Sử dụng chú thích và nhãn để giải thích ý nghĩa của các thành phần trong biểu đồ. Điều này giúp người đọc hiểu rõ thông điệp mà bạn muốn truyền đạt.
# Ví dụ: Chú thích
plt.annotate('Điểm đặc biệt', xy=(x_special, y_special), xytext=(x_text, y_text), arrowprops=dict(facecolor='black', shrink=0.05))
Dòng mã này sử dụng hàm annotate từ thư viện Matplotlib thường được sử dụng để nhấn mạnh hoặc giải thích điểm đặc biệt trên biểu đồ, làm cho biểu đồ trở nên dễ hiểu hơn đối với người đọc. Mũi tên được thêm vào giúp chỉ ra vị trí của điểm đặc biệt.
Lựa chọn bảng màu
Seaborn cung cấp nhiều bảng màu mặc định, như "deep", "muted", "pastel",... bạn có thể sử dụng. Chọn bảng màu phù hợp với nội dung để tạo điểm nhấn và làm cho biểu đồ trở nên sinh động hơn.
# Chọn bảng màu "pastel"
sns.set_palette("pastel")
Tùy Chỉnh Style
Lựa chọn style của biểu đồ cũng đóng vai trò quan trọng. Bạn có thể chọn giữa "whitegrid", "darkgrid", "white", "dark", và "ticks" để tạo ra không gian trắng, ô lưới, hoặc các biểu đồ với đường tick đậm.
sns.set_style("whitegrid")
Sử Dụng FacetGrid Cho Biểu Đồ Phức Tạp
FacetGrid giúp bạn tạo biểu đồ với nhiều ô (facet), rất hữu ích khi dùng để so sánh các phân khúc dữ liệu khác nhau.
g = sns.FacetGrid(data, col="category", hue="category", col_wrap=4)
g.map(plt.scatter, "x", "y")
Sử Dụng Palettes Màu Động
Palettes màu động như sns.light_palette() hoặc sns.dark_palette() có thể làm cho biểu đồ của mình trở nên sinh động hơn.
colors = sns.light_palette("blue", as_cmap=True)
sns.scatterplot(x="x", y="y", hue="category", data=data, palette=colors)
Sử Dụng subplot Để Hiển Thị Nhiều Biểu Đồ
Chuẩn bi dữ liệu
import matplotlib.pyplot as plt
import numpy as np # Dữ liệu mẫu
categories = ['A', 'B', 'C', 'D']
data1 = np.array([30, 20, 25, 15])
data2 = np.array([10, 25, 15, 30])
Sử dụng subplot để chia cửa sổ vẽ thành nhiều khu vực và hiển thị từng biểu đồ một cách rõ ràng.
# Biểu đồ 1
plt.subplot(1, 2, 1)
plt.bar(categories, data1, color='skyblue')
plt.title('Biểu Đồ 1') # Biểu đồ 2
plt.subplot(1, 2, 2)
plt.bar(categories, data2, color='salmon')
plt.title('Biểu Đồ 2') plt.tight_layout() # Đảm bảo không bị trùng lắp
plt.show()
Code này giúp so sánh giữa hai tập dữ liệu (data1 và data2) một cách trực quan và dễ nhìn. Cách này thường được sử dụng khi muốn so sánh hai trường dữ liệu cùng một lúc, giúp nhìn ra sự khác biệt và xu hướng.
Sử Dụng Explode Trong Pie Chart
Sử dụng explode trong Python là một cách sáng tạo để làm nổi bật những thông tin quan trọng trong biểu đồ của bạn.
Chuẩn bị dữ liệu
labels = ['Điện Thoại', 'Laptop', 'Tablet', 'Đồ Gia Dụng']
sizes = [40, 30, 15, 15]
explode = (0.1, 0, 0, 0) # chỉ nổi bật phần Điện Thoại plt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, shadow=True, startangle=140)
plt.title('Phân Phối Thị Trường Các Sản Phẩm')
plt.axis('equal') # Đảm bảo biểu đồ hình tròn
plt.show()
Mã nguồn trên sử dụng thư viện Matplotlib để vẽ biểu đồ tròn (pie chart) để thể hiện phân phối thị trường của các sản phẩm khác nhau. Biểu đồ tròn thường được sử dụng để thể hiện phần trăm phân phối hoặc tỷ lệ giữa các phần trong một tập dữ liệu. Trong trường hợp này, nó giúp hiểu rõ hơn về phân phối thị trường của các sản phẩm khác nhau.
Như bạn thấy ở hình trên mình đã làm nổi bật phần Điện thoại lên, nhìn trông bắt mắt hơn đúng không nào
Sử Dụng twins
Sử dụng twins trong Python là một cách tuyệt vời để hiển thị nhiều biểu đồ trên cùng một hình và tận dụng sức mạnh của thư viện Matplotlib
Dữ liệu mẫu
categories = ['A', 'B', 'C', 'D']
data1 = np.array([30, 20, 25, 15])
data2 = np.array([10, 25, 15, 30])
# Tạo figure và trục kép
fig, ax1 = plt.subplots() # Biểu đồ 1
ax1.bar(categories, data1, color='skyblue')
ax1.set_ylabel('Biểu Đồ 1', color='skyblue') # Tạo trục thứ hai
ax2 = ax1.twinx() # Biểu đồ 2
ax2.plot(categories, data2, marker='o', color='salmon')
ax2.set_ylabel('Biểu Đồ 2', color='salmon') # Tùy chỉnh hiệu ứng và kiểu đường
ax1.grid(False)
ax2.grid(False)
ax1.set_facecolor('#f0f0f0')
ax2.set_facecolor('#f0f0f0')
ax1.yaxis.label.set_color('gray')
ax2.yaxis.label.set_color('gray') # Thiết lập các thuộc tính chung
ax1.set_xlabel('Thể Loại')
plt.title('Biểu Đồ Sử Dụng Twins') plt.show()
Mã nguồn trên sử dụng thư viện Matplotlib để vẽ hai biểu đồ trên cùng một hình sử dụng tính năng twins để có hai trục y riêng biệt. Cách sử dụng twins giúp hiển thị hai biểu đồ trên cùng một hình mà không làm mất thông tin và giúp so sánh giữa chúng một cách hiệu quả.
Ở đây mình kết hợp để vẽ 2 biểu đồ Cột và Line mục đích giúp báo cáo dễ nhìn hơn
Kết Luận
Python cung cấp cho chúng ta những công cụ mạnh mẽ để tạo ra những biểu đồ đẹp và dễ hiểu. Bằng cách sử dụng các thư viện và áp dụng những tips trên, bạn có thể biến dữ liệu thành báo cáo dễ hiểu và bắt mắt
Reference
https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.pie.html