Biểu đồ tròn Python: Tạo và tùy chỉnh với Pandas và Matplotlib
Tìm hiểu cách xây dựng và nâng cao biểu đồ tròn bằng thư viện Matplotlib và Pandas của Python. Khám phá ví dụ mã thực tiễn và các mẹo thiết kế thiết yếu để tạo trực quan rõ ràng, dễ đọc.
Biểu đồ tròn là một trong những dạng biểu đồ phổ biến nhất để trực quan hóa tỷ lệ. Có lẽ đến giờ bạn đã quen thuộc với chúng; nếu chưa, hãy tưởng tượng một chiếc bánh lớn, hoặc một khối phô mai Thụy Sĩ tròn, được cắt thành nhiều lát có kích thước khác nhau.
Python cung cấp nhiều cách để tạo biểu đồ tròn. Trong hướng dẫn này, chúng ta sẽ tập trung vào cách tạo biểu đồ tròn trong Python bằng Matplotlib và Pandas, hai gói phân tích dữ liệu phổ biến nhất trong Python. Bài viết sẽ được cấu trúc theo phương pháp, để bạn có thể tập trung vào cách tiếp cận và cú pháp phù hợp hơn với quy trình làm việc của mình.
Bên cạnh các phương pháp này, chúng tôi sẽ cung cấp một số mẹo để cải thiện việc khắc phục sự cố, khả năng tiếp cận và khả năng sử dụng của biểu đồ tròn. Cuối cùng, chúng ta cũng sẽ xem xét các lựa chọn biểu đồ khác có thể phù hợp hơn biểu đồ tròn trong một số tình huống nhất định.
Các cách tạo biểu đồ tròn trong Python
Tôi sẽ giới thiệu hai cách khác nhau để tạo biểu đồ tròn trong Python, và bạn có thể tự quyết định phương pháp mình ưa thích. Cả hai đều phổ biến và là lựa chọn tốt, nên bạn khó mà chọn sai.
Phương pháp 1: Biểu đồ tròn với Matplotlib
Hãy bắt đầu tìm hiểu cách tạo biểu đồ tròn bằng Matplotlib.
Trong phần này, chúng ta sẽ phân tích dữ liệu về các khóa học khác nhau có trong danh mục khóa học của DataCamp, bạn có thể tìm thấy tại đây. (Tôi đã xem qua danh mục và đếm số lượng khóa học có sẵn cho mỗi công nghệ rồi tạo một bảng với thông tin này.)
Cách tạo biểu đồ
Để tạo biểu đồ tròn đầu tiên với Matplotlib, ta có thể dùng hàm plt.pie(). Chúng ta sẽ dùng một danh sách số lượng khóa học có sẵn cho các công nghệ dữ liệu và AI khác nhau (mỗi số đại diện cho kích thước một lát), cùng một danh sách thứ hai chứa tên các công nghệ, sẽ được đưa vào biểu đồ bằng tham số labels. Ngoài ra, ta có thể dùng plt.legend() để thêm chú giải riêng.
Như thường lệ, đừng quên chạy plt.show() ở cuối mã để hiển thị biểu đồ Matplotlib đúng cách.
import pandas as pd
import matplotlib.pyplot as plt
courses =[164,127,31,31,12,11]
labels =['Python','R','SQL','Power BI','Excel','ChatGPT']
dictionary ={'courses':courses,'labels':labels}
python_pie_chart_df = pd.DataFrame(dictionary)
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels)
plt.show()Được hỗ trợ bởi
plt.pie(x = python_pie_chart_df.courses)
plt.legend(labels = python_pie_chart_df.labels, loc =[0.95,0.35])
plt.show()Được hỗ trợ bởi
Ngoài ra, chúng ta cũng có thể hiển thị phần trăm của mỗi lát bằng tham số autopct. Trong ví dụ sau, chúng ta hiển thị kích thước các lát với một chữ số thập phân.
Trông ổn hơn nhiều, đúng không? Nhưng còn rất nhiều điều chúng ta có thể làm để tùy chỉnh biểu đồ tròn. Ví dụ, ta có thể điều chỉnh khoảng cách của nhãn và phần trăm bằng các tham số labeldistance và pctdistance tương ứng, và chọn góc bắt đầu cắt lát bằng tham số startangle.
Cuối cùng, giả sử bạn đang thuyết trình và muốn tập trung vào các khóa học R. Một cách tiện lợi để làm nổi bật điều này là làm “nổi” lát đó bằng tham số explode, như sau:
explode =(0,0.1,0,0,0,0)# only "explode" the 2nd slice (i.e. 'R')
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels,
colors = datacamp_palette, autopct='%1.1f%%',
pctdistance=0.8, labeldistance=1.1,
startangle=180, explode=explode)
plt.show()Được hỗ trợ bởi
Cách lưu biểu đồ
Sau khi tạo xong biểu đồ tròn, bạn đã sẵn sàng chia sẻ với cộng tác viên. Bạn có thể làm điều này bằng hàm plt.savefig(), hàm này nhận tên tệp làm đầu vào và cho phép bạn lưu ở nhiều định dạng như .png, .jpg, .svg hoặc .pdf. Ngoài ra, bạn có thể dùng dpi để thay đổi độ phân giải hình ảnh.
Dưới đây là ví dụ cách lưu đồ thị hình tròn của bạn ở định dạng .jpg với 200 điểm ảnh trên inch.
Giờ bạn đã biết cách tạo biểu đồ tròn với Matplotlib, hãy xem cách làm với Pandas.
Cách tạo biểu đồ
Pandas có phương thức plot() có thể dùng để vẽ nhiều loại biểu đồ. Phương thức này hoạt động với cả đối tượng DataFrame và Series trong Pandas. Đối số kind trong phương thức plot() giúp bạn chỉ định loại biểu đồ. Trong trường hợp của chúng ta, bạn có thể tạo biểu đồ tròn bằng kind ='pie'. Bạn cũng có thể thêm tham số labelsđể gắn tên cho mỗi lát và tham số autopctđể thêm phần trăm của từng lát.
python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%')
plt.show()Được hỗ trợ bởi
Cách tùy chỉnh biểu đồ
Phương thức plot() của Pandas là công cụ vẽ nhanh nhưng có giới hạn về tùy biến. May mắn là phương thức này dùng Matplotlib làm backend, nghĩa là bạn có thể dùng cú pháp Matplotlib bên ngoài phương thức để tùy chỉnh trực quan hóa. Dưới đây là ví dụ cách kết hợp Pandas và Matplotlib.
Để đảm bảo biểu đồ tròn hiển thị đúng, bạn phải cung cấp dữ liệu phù hợp cho Matplotlib. Điều đó có nghĩa là bạn luôn nên làm sạch dữ liệu trong dataframe, ví dụ xóa giá trị null bằng pd.dropna() và đặt đúng kiểu dữ liệu cho các cột đầu vào.
Hơn nữa, việc tùy chỉnh sẽ là chìa khóa để hiển thị một biểu đồ tròn thuyết phục và hiệu quả. Tuy nhiên, lưu ý rằng nếu bạn dùng Pandas, các tùy chỉnh nâng cao như làm nổi lát có thể không được hỗ trợ. Như đã đề cập, nếu bạn cần kiểm soát nhiều hơn đối với biểu đồ tròn, bạn có thể cần thêm mã Matplotlib vào script của mình.
Nâng cao khả năng truy cập và khả năng sử dụng
Khi hiển thị biểu đồ tròn, bạn nên tuân thủ các thực hành tốt.
Đánh giá khán giả của bạn: Quy tắc vàng là luôn thấu hiểu đối tượng mà trực quan hóa của bạn nhắm đến. Điều này có nghĩa là nắm rõ chuyên môn, mức độ kiến thức kỹ thuật và mối quan tâm của khán giả.
Loại bỏ rối rắm: Để tránh trực quan hóa khó đọc, lộn xộn, hãy tự hỏi những gì bạn đưa vào có liên quan với khán giả không, và loại bỏ tối đa các yếu tố không cần thiết. Với biểu đồ tròn, bạn nên tránh hiệu ứng 3D hoặc đổ bóng, vì chúng có thể cản trở việc diễn giải.
Chú ý phông chữ: Dù có thể hấp dẫn khi dùng nhiều phông và cỡ chữ khác nhau, nguyên tắc chung là chỉ dùng một phông với không quá ba cỡ chữ. Hãy tuân theo hệ thống phân cấp phông chữ, giữ tiêu đề lớn hơn thân bài, và dùng kiểu chữ đậm để làm nổi bật các yếu tố chính và tiêu đề.
Sử dụng màu sắc một cách sáng tạo: Màu sắc là một trong những yếu tố bắt mắt nhất của bất kỳ trực quan hóa dữ liệu nào. Vì vậy, hãy cân nhắc kỹ khi chọn bảng màu cho trực quan hóa. Điều này có nghĩa là duy trì bảng màu nhất quán giữa các biểu đồ và sử dụng màu một cách có hệ thống để phân biệt nhóm, mức độ quan trọng và các tầng bậc thông tin khác nhau.
Kiểm tra trên thiết bị khác: Luôn là lời khuyên hay khi kiểm tra trực quan để xem chúng hiển thị thế nào trên nhiều thiết bị.
Trực quan hóa dữ liệu có thể được xem là một nghệ thuật. Trực giác và gu thẩm mỹ có thể tạo khác biệt, nhưng bạn luôn nên cân nhắc lý thuyết đằng sau. Để biết thêm về các thực hành tốt nhất cho trực quan hóa dữ liệu hiệu quả, hãy xem Data Storytelling & Communication Cheat Sheet của chúng tôi. Ngoài ra, nếu bạn đang làm việc với dashboard, bài viết Best Practices for Designing Dashboards rất đáng đọc.
Các lựa chọn thay thế cho biểu đồ tròn
Thực tế mà nói, biểu đồ tròn nằm trong số những biểu đồ bị chỉ trích nhiều nhất. Đã có bằng chứng cho thấy con người không giỏi lắm trong việc diễn giải góc. Ta có thể minh họa điều này với biểu đồ tròn đã dùng trước đó. Hãy xem các lát của Excel và ChatGPT. Bạn có thể nói ngay lát nào có góc lớn hơn không?
Có lẽ là không, và đó là lý do nhiều chuyên gia trực quan hóa dữ liệu khuyên dùng các biểu đồ khác để biểu diễn tỷ lệ, đặc biệt khi có nhiều hạng mục, như biểu đồ cột và biểu đồ cột xếp chồng, treemap, hoặc thậm chí biểu đồ donut. Bạn có thể tìm hiểu thêm về các lựa chọn thay thế này trong bài viết Types of Data Plots and How to Create Them in Python.
Kết luận
Chúc mừng bạn đã hoàn thành hướng dẫn. Python là một ngôn ngữ lập trình cực kỳ linh hoạt, cung cấp nhiều thư viện và cách tiếp cận để tạo biểu đồ tròn. Trong hướng dẫn này, chúng ta đã phân tích cách tạo biểu đồ tròn với Matplotlib và Pandas. Cả hai đều phù hợp như nhau cho công việc và có nhiều điểm tương đồng đáng chú ý. Mục tiêu không phải là chọn một cái mà là sử dụng xen kẽ theo nhu cầu và quy trình làm việc của bạn.
Nếu bạn muốn biết thêm về biểu đồ tròn và rộng hơn là trực quan hóa dữ liệu trong Python, DataCamp luôn sẵn sàng hỗ trợ. Hãy xem các tài liệu chuyên biệt của chúng tôi để sẵn sàng trở thành một “phù thủy” trực quan hóa!
Tôi là một chuyên viên phân tích dữ liệu tự do, hợp tác với các công ty và tổ chức trên toàn thế giới trong các dự án khoa học dữ liệu. Tôi cũng là giảng viên khoa học dữ liệu với hơn 2 năm kinh nghiệm. Tôi thường xuyên viết bài về khoa học dữ liệu bằng tiếng Anh và tiếng Tây Ban Nha; một số bài đã được đăng trên các trang uy tín như DataCamp, Towards Data Science và Analytics Vidhya. Là một nhà khoa học dữ liệu có nền tảng khoa học chính trị và luật, mục tiêu của tôi là làm việc tại giao điểm giữa chính sách công, pháp luật và công nghệ, tận dụng sức mạnh của ý tưởng để thúc đẩy các giải pháp và cách tiếp cận mới nhằm giúp chúng ta đối mặt với những thách thức cấp bách, đặc biệt là khủng hoảng khí hậu. Tôi xem mình là người tự học, không ngừng trau dồi và là một người ủng hộ vững chắc cho tính đa ngành. Không bao giờ là quá muộn để học điều mới.
Câu hỏi thường gặp
Biểu đồ tròn là gì và khi nào tôi nên sử dụng?⌄
Biểu đồ tròn là loại biểu đồ trong đó một hình tròn được chia thành các cung tròn, mỗi cung đại diện cho một tỷ lệ của tổng thể. Vì vậy, nó phù hợp để biểu diễn tỷ lệ.
Làm thế nào để tạo biểu đồ tròn trong Matplotlib?⌄
Cách dễ nhất để tạo biểu đồ tròn với Matplotlib là dùng hàm plt.pie(), đi kèm nhiều tham số tùy chỉnh.
Làm thế nào để tạo biểu đồ tròn trong Pandas?⌄
Cách dễ nhất để tạo biểu đồ tròn với Pandas là dùng phương thức Series.plot.(kind=’pie’). Phương thức này cho phép trực quan hóa nhanh trên DataFrame của Pandas nhưng có ít tùy chọn tùy biến hơn so với Matplotlib.
Những thực hành tốt nhất khi tạo biểu đồ tròn là gì?⌄
Bạn luôn nên tuân theo các thực hành tốt nhất khi tạo trực quan hóa. Điều đó bao gồm giữ cho biểu đồ tròn càng đơn giản càng tốt, tránh các yếu tố không cần thiết, chọn bảng màu trực quan và điều chỉnh biểu đồ theo khán giả mục tiêu.
Những hạn chế chính của biểu đồ tròn là gì?⌄
Con người không giỏi trong việc diễn giải góc; đó là lý do nhiều chuyên gia trực quan hóa khuyên dùng biểu đồ khác để biểu diễn tỷ lệ, như biểu đồ cột.
Học các kiến thức cơ bản về thống kê, bao gồm các đại lượng trung tâm và độ phân tán, phân phối xác suất, và kiểm định giả thuyết mà không cần lập trình!
Biểu đồ tròn là một trong những dạng biểu đồ phổ biến nhất để trực quan hóa tỷ lệ. Có lẽ đến giờ bạn đã quen thuộc với chúng; nếu chưa, hãy tưởng tượng một chiếc bánh lớn, hoặc một khối phô mai Thụy Sĩ tròn, được cắt thành nhiều lát có kích thước khác nhau.
Python cung cấp nhiều cách để tạo biểu đồ tròn. Trong hướng dẫn này, chúng ta sẽ tập trung vào cách tạo biểu đồ tròn trong Python bằng Matplotlib và Pandas, hai gói phân tích dữ liệu phổ biến nhất trong Python. Bài viết sẽ được cấu trúc theo phương pháp, để bạn có thể tập trung vào cách tiếp cận và cú pháp phù hợp hơn với quy trình làm việc của mình.
Bên cạnh các phương pháp này, chúng tôi sẽ cung cấp một số mẹo để cải thiện việc khắc phục sự cố, khả năng tiếp cận và khả năng sử dụng của biểu đồ tròn. Cuối cùng, chúng ta cũng sẽ xem xét các lựa chọn biểu đồ khác có thể phù hợp hơn biểu đồ tròn trong một số tình huống nhất định.
Các cách tạo biểu đồ tròn trong Python
Tôi sẽ giới thiệu hai cách khác nhau để tạo biểu đồ tròn trong Python, và bạn có thể tự quyết định phương pháp mình ưa thích. Cả hai đều phổ biến và là lựa chọn tốt, nên bạn khó mà chọn sai.
Phương pháp 1: Biểu đồ tròn với Matplotlib
Hãy bắt đầu tìm hiểu cách tạo biểu đồ tròn bằng Matplotlib.
Trong phần này, chúng ta sẽ phân tích dữ liệu về các khóa học khác nhau có trong danh mục khóa học của DataCamp, bạn có thể tìm thấy tại đây. (Tôi đã xem qua danh mục và đếm số lượng khóa học có sẵn cho mỗi công nghệ rồi tạo một bảng với thông tin này.)
Cách tạo biểu đồ
Để tạo biểu đồ tròn đầu tiên với Matplotlib, ta có thể dùng hàm
plt.pie(). Chúng ta sẽ dùng một danh sách số lượng khóa học có sẵn cho các công nghệ dữ liệu và AI khác nhau (mỗi số đại diện cho kích thước một lát), cùng một danh sách thứ hai chứa tên các công nghệ, sẽ được đưa vào biểu đồ bằng tham sốlabels. Ngoài ra, ta có thể dùngplt.legend()để thêm chú giải riêng.Như thường lệ, đừng quên chạy
plt.show()ở cuối mã để hiển thị biểu đồ Matplotlib đúng cách.Ngoài ra, chúng ta cũng có thể hiển thị phần trăm của mỗi lát bằng tham số
autopct. Trong ví dụ sau, chúng ta hiển thị kích thước các lát với một chữ số thập phân.Cách tùy chỉnh biểu đồ
Biểu đồ tròn trong Matplotlib, cũng như các lát cấu thành, có thể tùy chỉnh rất linh hoạt. Hãy xem một số tùy chọn mà hàm
pie.plot()cung cấp.Để thay đổi màu của các lát, ta có thể dùng tham số
colors. Chúng ta sẽ dùng tham số này để áp dụng bảng màu của DataCamp cho biểu đồ.Trông ổn hơn nhiều, đúng không? Nhưng còn rất nhiều điều chúng ta có thể làm để tùy chỉnh biểu đồ tròn. Ví dụ, ta có thể điều chỉnh khoảng cách của nhãn và phần trăm bằng các tham số
labeldistancevàpctdistancetương ứng, và chọn góc bắt đầu cắt lát bằng tham sốstartangle.Cuối cùng, giả sử bạn đang thuyết trình và muốn tập trung vào các khóa học R. Một cách tiện lợi để làm nổi bật điều này là làm “nổi” lát đó bằng tham số
explode, như sau:Cách lưu biểu đồ
Sau khi tạo xong biểu đồ tròn, bạn đã sẵn sàng chia sẻ với cộng tác viên. Bạn có thể làm điều này bằng hàm
plt.savefig(), hàm này nhận tên tệp làm đầu vào và cho phép bạn lưu ở nhiều định dạng như .png, .jpg, .svg hoặc .pdf. Ngoài ra, bạn có thể dùngdpiđể thay đổi độ phân giải hình ảnh.Dưới đây là ví dụ cách lưu đồ thị hình tròn của bạn ở định dạng .jpg với 200 điểm ảnh trên inch.
Bạn có thể tìm hiểu thêm về cách lưu trực quan hóa đúng cách trong khóa học Introduction to Data Visualization with Matplotlib của chúng tôi.
Phương pháp 2: Biểu đồ tròn với Pandas
Giờ bạn đã biết cách tạo biểu đồ tròn với Matplotlib, hãy xem cách làm với Pandas.
Cách tạo biểu đồ
Pandas có phương thức
plot()có thể dùng để vẽ nhiều loại biểu đồ. Phương thức này hoạt động với cả đối tượng DataFrame và Series trong Pandas. Đối sốkindtrong phương thứcplot()giúp bạn chỉ định loại biểu đồ. Trong trường hợp của chúng ta, bạn có thể tạo biểu đồ tròn bằngkind ='pie'. Bạn cũng có thể thêm tham sốlabelsđể gắn tên cho mỗi lát và tham sốautopctđể thêm phần trăm của từng lát.Cách tùy chỉnh biểu đồ
Phương thức
plot()của Pandas là công cụ vẽ nhanh nhưng có giới hạn về tùy biến. May mắn là phương thức này dùng Matplotlib làm backend, nghĩa là bạn có thể dùng cú pháp Matplotlib bên ngoài phương thức để tùy chỉnh trực quan hóa. Dưới đây là ví dụ cách kết hợp Pandas và Matplotlib.Cách lưu biểu đồ
Lưu biểu đồ tròn trong Pandas hoàn toàn giống như trong Matplotlib, vì Pandas hoạt động dựa trên Matplotlib.
Khắc phục sự cố với biểu đồ tròn
Để đảm bảo biểu đồ tròn hiển thị đúng, bạn phải cung cấp dữ liệu phù hợp cho Matplotlib. Điều đó có nghĩa là bạn luôn nên làm sạch dữ liệu trong dataframe, ví dụ xóa giá trị null bằng
pd.dropna()và đặt đúng kiểu dữ liệu cho các cột đầu vào.Hơn nữa, việc tùy chỉnh sẽ là chìa khóa để hiển thị một biểu đồ tròn thuyết phục và hiệu quả. Tuy nhiên, lưu ý rằng nếu bạn dùng Pandas, các tùy chỉnh nâng cao như làm nổi lát có thể không được hỗ trợ. Như đã đề cập, nếu bạn cần kiểm soát nhiều hơn đối với biểu đồ tròn, bạn có thể cần thêm mã Matplotlib vào script của mình.
Nâng cao khả năng truy cập và khả năng sử dụng
Khi hiển thị biểu đồ tròn, bạn nên tuân thủ các thực hành tốt.
Trực quan hóa dữ liệu có thể được xem là một nghệ thuật. Trực giác và gu thẩm mỹ có thể tạo khác biệt, nhưng bạn luôn nên cân nhắc lý thuyết đằng sau. Để biết thêm về các thực hành tốt nhất cho trực quan hóa dữ liệu hiệu quả, hãy xem Data Storytelling & Communication Cheat Sheet của chúng tôi. Ngoài ra, nếu bạn đang làm việc với dashboard, bài viết Best Practices for Designing Dashboards rất đáng đọc.
Các lựa chọn thay thế cho biểu đồ tròn
Thực tế mà nói, biểu đồ tròn nằm trong số những biểu đồ bị chỉ trích nhiều nhất. Đã có bằng chứng cho thấy con người không giỏi lắm trong việc diễn giải góc. Ta có thể minh họa điều này với biểu đồ tròn đã dùng trước đó. Hãy xem các lát của Excel và ChatGPT. Bạn có thể nói ngay lát nào có góc lớn hơn không?
Có lẽ là không, và đó là lý do nhiều chuyên gia trực quan hóa dữ liệu khuyên dùng các biểu đồ khác để biểu diễn tỷ lệ, đặc biệt khi có nhiều hạng mục, như biểu đồ cột và biểu đồ cột xếp chồng, treemap, hoặc thậm chí biểu đồ donut. Bạn có thể tìm hiểu thêm về các lựa chọn thay thế này trong bài viết Types of Data Plots and How to Create Them in Python.
Kết luận
Chúc mừng bạn đã hoàn thành hướng dẫn. Python là một ngôn ngữ lập trình cực kỳ linh hoạt, cung cấp nhiều thư viện và cách tiếp cận để tạo biểu đồ tròn. Trong hướng dẫn này, chúng ta đã phân tích cách tạo biểu đồ tròn với Matplotlib và Pandas. Cả hai đều phù hợp như nhau cho công việc và có nhiều điểm tương đồng đáng chú ý. Mục tiêu không phải là chọn một cái mà là sử dụng xen kẽ theo nhu cầu và quy trình làm việc của bạn.
Nếu bạn muốn biết thêm về biểu đồ tròn và rộng hơn là trực quan hóa dữ liệu trong Python, DataCamp luôn sẵn sàng hỗ trợ. Hãy xem các tài liệu chuyên biệt của chúng tôi để sẵn sàng trở thành một “phù thủy” trực quan hóa!