
Matplotlib và Plotly: Nên chọn công cụ biểu đồ Python nào?
Từ biểu đồ tĩnh đến khám phá dữ liệu tương tác Bài viết Matplotlib vs Plotly: Nên chọn công cụ biểu đồ Python nào? xuất hiện lần đầu trên Towards Data Science.
Trực quan hóa dữ liệu
Matplotlib và Plotly: Nên chọn công cụ biểu đồ Python nào?
Từ các biểu đồ tĩnh đến khám phá dữ liệu tương tác
Thomas Reid
Ngày 7/8/2026
8 phút đọc
Chia sẻ
Ảnh: Tác giả
Nếu bạn là một nhà khoa học dữ liệu hoặc nhà phân tích, một phần đáng kể trong khối lượng công việc của bạn sẽ là tạo các hình ảnh trực quan hóa dữ liệu. Nếu bạn là người dùng Python, có thể bạn đã quen thuộc hoặc có kiến thức sơ bộ về Matplotlib. Đây là nền tảng của việc vẽ biểu đồ trong Python. Tuy nhiên, như thường lệ, điều gì sẽ xảy ra nếu bạn muốn khán giả (hoặc chính bạn) tương tác với các biểu đồ của mình – phóng to các chi tiết, di chuột qua các điểm để xem giá trị hoặc bật/tắt các tập dữ liệu?
Đối với điều đó, thư viện biểu đồ Plotly cung cấp một giải pháp thay thế hiện đại, hấp dẫn. Nó thường chỉ yêu cầu những thay đổi tối thiểu đối với cơ sở mã hiện có của bạn để cải thiện đáng kể trải nghiệm người dùng.
Trong bài viết này, tôi sẽ cung cấp một số ví dụ về việc sử dụng Plotly và Matplotlib trên cùng một tập dữ liệu để minh họa sự khác biệt chính giữa chúng.
Đến cuối bài viết, bạn sẽ có đủ kiến thức để quyết định chính xác lý do tại sao bạn có thể muốn bắt đầu sử dụng cái này thay vì cái kia.
Tôi không có bất kỳ liên kết hoặc mối quan hệ thương mại nào với các thư viện Plotly hoặc Matplotlib hoặc những người hoặc công ty đã tạo ra chúng.
Matplotlib là gì?
Nếu bạn đã từng vẽ biểu đồ bằng Python trước đây, có thể bạn đã biết Matplotlib. Đây là thư viện vẽ biểu đồ kỳ cựu dành cho Python, cung cấp sự linh hoạt và kiểm soát tuyệt vời để tạo ra các biểu đồ và đồ thị tĩnh, chất lượng xuất bản. Được phát triển bởi John D. Hunter, một nhà thần kinh học người Mỹ, ban đầu nó được thiết kế để mô phỏng khả năng vẽ biểu đồ của MATLAB. Sức mạnh của nó nằm ở tính phổ biến, tài liệu phong phú và khả năng kiểm soát chi tiết gần như mọi yếu tố của biểu đồ.
Một thư viện phổ biến khác, Seaborn, được xây dựng trên Matplotlib và cung cấp các giao diện cấp cao hơn để vẽ các đồ họa thống kê hấp dẫn. Đầu ra chính thường là các hình ảnh tĩnh, chẳng hạn như PNG, JPG và PDF.
Plotly là gì và tại sao bạn cần nó?
Plotly là một thư viện đồ thị mã nguồn mở, hiện đại, tạo ra các hình ảnh trực quan hóa tương tác. Được phát triển bởi Plotly Technologies, nó cho phép bạn xây dựng các biểu đồ đẹp mà người dùng có thể tương tác trực tiếp trong trình duyệt web hoặc sổ ghi chép Jupyter. Các tương tác này bao gồm phóng to, thu nhỏ, di chuyển để xem giá trị điểm dữ liệu, chọn vùng và nhiều hơn nữa. Các biểu đồ Plotly được mô tả dưới dạng đối tượng JSON và được hiển thị bằng thư viện JavaScript Plotly.js. Thư viện Python (plotly.py) cung cấp một giao diện dễ dàng để tạo các cấu trúc JSON này.
Tại sao bạn cần nó? Chủ yếu là vì tính tương tác của nó biến việc trực quan hóa dữ liệu từ trải nghiệm xem thụ động thành một công cụ khám phá tích cực. Nó cho phép người dùng:
Khám phá chi tiết. Phóng to các khu vực dày đặc của biểu đồ.
Xác định các điểm cụ thể. Di chuột qua các yếu tố để xem các giá trị chính xác mà không làm lộn xộn biểu đồ với các nhãn.
So sánh các tập con. Bật và tắt các dấu vết (đường, thanh, v.v.) thông qua chú giải.
Chia sẻ thông tin chi tiết phong phú hơn. Nhúng các biểu đồ tương tác đầy đủ vào các trang web, bảng điều khiển (như Plotly Dash) hoặc chia sẻ chúng dưới dạng các tệp HTML độc lập.
Nói chung, các biểu đồ tương tác thường cung cấp nhiều thông tin chi tiết hơn so với hình ảnh tĩnh để phân tích dữ liệu thăm dò, trình bày và ứng dụng web.
Được rồi, với những điều đã nói, hãy cùng đi vào các ví dụ của chúng ta.
Điều kiện tiên quyết
Người dùng cần cài đặt Python và pip (hoặc Conda). Chúng tôi sẽ sử dụng Pandas để xử lý dữ liệu cơ bản, Matplotlib và Seaborn để so sánh cơ sở, và Plotly cho giải pháp tương tác.
Trước đó, hãy thiết lập môi trường phát triển. Tôi sử dụng Conda cho việc này, nhưng bạn có thể sử dụng bất kỳ công cụ hoặc phương pháp nào phù hợp.
#tạo môi trường thử nghiệm
(base) $ conda create -n python_plots python=3.13 -y
Bây giờ, hãy kích hoạt môi trường và cài đặt các thư viện cần thiết.
(base) $ conda activate python_plots
(python_plots) $ pip install matplotlib seaborn pandas plotly jupyter numpy
Tiếp theo, gõ jupyter notebook vào dấu nhắc lệnh của bạn. Bạn sẽ thấy một Jupyter Notebook mở trong trình duyệt. Nếu điều đó không tự động xảy ra, bạn có thể sẽ thấy một màn hình đầy thông tin sau lệnh jupyter notebook. Gần cuối, bạn sẽ tìm thấy một URL để sao chép và dán vào trình duyệt để khởi chạy Jupyter Notebook.
URL của bạn sẽ khác với của tôi, nhưng nó sẽ trông giống như thế này:
http://127.0.0.1:8888/tree?token=3b9f7bd07b6966b41b68e2350721b2d0b6f388d248cc69da
Ví dụ 1: Biểu đồ phân tán đơn giản
Chúng ta hãy bắt đầu với một biểu đồ phân tán cơ bản so sánh hai biến. Đầu tiên, chúng ta sẽ tạo một số dữ liệu mẫu bằng NumPy và Pandas.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
from timeit import default_timer as timer
# Tạo một số dữ liệu mẫu
np.random.seed(42)
n_points = 100
data = pd.DataFrame({
'x_values': np.random.rand(n_points) * 10,
'y_values': 2.5 * np.random.rand(n_points) * 10 + np.random.randn(n_points) * 5,
'category': np.random.choice(['A', 'B', 'C'], n_points)
})
print(data.head())
# Đầu ra
#
x_values y_values category
0 3.745401 11.156643 C
1 9.507143 18.211831 B
2 7.319939 18.198903 A
3 5.986585 12.181994 C
4 1.560186 4.961931 C
Bây giờ, chúng ta có thể vẽ biểu đồ này bằng Matplotlib (thông qua Seaborn để có các thiết lập mặc định đẹp hơn một chút và dễ dàng tô màu theo danh mục).
# --- Matplotlib/Seaborn ---
start = timer()
plt.figure(figsize=(8, 5))
sns.scatterplot(data=data, x='x_values', y='y_values', hue='category')
plt.title('Matplotlib Scatter Plot')
plt.xlabel('X Values')
plt.ylabel('Y Values')
plt.grid(True)
plt.show()
print(f"Matplotlib time: {timer()-start:.4f} seconds")
Điều này tạo ra một biểu đồ phân tán tĩnh quen thuộc.
Bây giờ, chúng ta hãy tạo cùng một biểu đồ bằng Plotly Express, cung cấp một giao diện cấp cao tương tự như Seaborn.
Thật không may, tôi chỉ có thể đăng một hình ảnh của




Nguồn tin: Towards Data Science — Tác giả: Thomas Reid. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.