Vẽ Biểu Đồ Với Matplotlib Trong Python

1. Matplotlib Là Gì?
Matplotlib là một thư viện phổ biến trong Python để vẽ biểu đồ và trực quan hóa dữ liệu. Nó hỗ trợ nhiều loại biểu đồ như:
- Biểu đồ đường (Line Plot)
- Biểu đồ cột (Bar Chart)
- Biểu đồ tròn (Pie Chart)
- Biểu đồ tán xạ (Scatter Plot)
- Biểu đồ histogram (Histogram)
2. Cài Đặt Matplotlib
Nếu bạn chưa cài đặt, hãy chạy lệnh sau:
pip install matplotlib
Sau đó, import thư viện vào chương trình:
import matplotlib.pyplot as plt
3. Vẽ Biểu Đồ Đường (Line Plot)
Ví dụ đơn giản
import matplotlib.pyplot as plt
# Dữ liệu
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# Vẽ biểu đồ đường
plt.plot(x, y, marker='o', linestyle='-', color='b', label="y = 2x")
# Thêm tiêu đề và nhãn
plt.title("Biểu đồ đường cơ bản")
plt.xlabel("Trục X")
plt.ylabel("Trục Y")
plt.legend()
# Hiển thị biểu đồ
plt.show()
Giải thích:
-
plt.plot(x, y, marker='o', linestyle='-', color='b')
: Vẽ đường với dấu tròn (o
) và màu xanh (b
). -
plt.title()
,plt.xlabel()
,plt.ylabel()
: Thêm tiêu đề và nhãn. -
plt.legend()
: Hiển thị chú thích.
4. Vẽ Biểu Đồ Cột (Bar Chart)
import matplotlib.pyplot as plt
# Dữ liệu
categories = ["Python", "Java", "C++", "JavaScript"]
values = [85, 75, 65, 90]
# Vẽ biểu đồ cột
plt.bar(categories, values, color=['blue', 'green', 'red', 'orange'])
# Thêm tiêu đề và nhãn
plt.title("Mức độ phổ biến của ngôn ngữ lập trình")
plt.xlabel("Ngôn ngữ")
plt.ylabel("Điểm số")
# Hiển thị biểu đồ
plt.show()
Kết quả: Biểu đồ cột thể hiện mức độ phổ biến của các ngôn ngữ lập trình.
5. Vẽ Biểu Đồ Tròn (Pie Chart)
import matplotlib.pyplot as plt
# Dữ liệu
labels = ["Python", "Java", "C++", "JavaScript"]
sizes = [40, 30, 15, 15]
# Vẽ biểu đồ tròn
plt.pie(sizes, labels=labels, autopct='%1.1f%%', colors=['blue', 'green', 'red', 'orange'])
# Thêm tiêu đề
plt.title("Tỉ lệ sử dụng ngôn ngữ lập trình")
# Hiển thị biểu đồ
plt.show()
Giải thích:
-
autopct='%1.1f%%'
: Hiển thị phần trăm trên từng phần của biểu đồ. -
colors
: Định nghĩa màu sắc cho từng phần.
6. Vẽ Biểu Đồ Tán Xạ (Scatter Plot)
import matplotlib.pyplot as plt
import numpy as np
# Dữ liệu ngẫu nhiên
x = np.random.rand(50)
y = np.random.rand(50)
# Vẽ biểu đồ tán xạ
plt.scatter(x, y, color='purple', marker='x')
# Thêm tiêu đề và nhãn
plt.title("Biểu đồ tán xạ")
plt.xlabel("Trục X")
plt.ylabel("Trục Y")
# Hiển thị biểu đồ
plt.show()
Ứng dụng: Biểu đồ tán xạ thường dùng để phân tích sự phân bố của dữ liệu.
7. Vẽ Biểu Đồ Histogram (Phân Bố Dữ Liệu)
import matplotlib.pyplot as plt
import numpy as np
# Dữ liệu điểm số ngẫu nhiên
data = np.random.randn(1000)
# Vẽ histogram
plt.hist(data, bins=30, color='blue', edgecolor='black')
# Thêm tiêu đề và nhãn
plt.title("Biểu đồ Histogram")
plt.xlabel("Giá trị")
plt.ylabel("Tần suất")
# Hiển thị biểu đồ
plt.show()
Giải thích:
-
bins=30
: Chia dữ liệu thành 30 khoảng. - Histogram thường dùng để phân tích sự phân bố của dữ liệu.
8. Tùy Chỉnh Biểu Đồ
Matplotlib hỗ trợ nhiều cách tùy chỉnh biểu đồ để làm cho nó đẹp hơn.
Thêm lưới vào biểu đồ
plt.grid(True)
Thêm nhiều đường trên cùng một biểu đồ
plt.plot(x1, y1, label="Dòng 1")
plt.plot(x2, y2, label="Dòng 2")
plt.legend()
Tùy chỉnh màu sắc và kiểu đường
plt.plot(x, y, color="red", linestyle="--", linewidth=2)
9. Vẽ Nhiều Biểu Đồ Trên Cùng Một Hình (Subplots)
import matplotlib.pyplot as plt
# Tạo một figure với 2 biểu đồ con
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
# Biểu đồ 1 - Line Plot
axs[0].plot([1, 2, 3], [4, 5, 6], color='blue', marker='o')
axs[0].set_title("Biểu đồ đường")
# Biểu đồ 2 - Bar Chart
axs[1].bar(["A", "B", "C"], [10, 20, 15], color='green')
axs[1].set_title("Biểu đồ cột")
# Hiển thị biểu đồ
plt.show()
Giải thích:
-
fig, axs = plt.subplots(1, 2)
: Tạo 2 biểu đồ con trên cùng một hàng. -
axs[0].plot()
: Vẽ biểu đồ đường vào biểu đồ con đầu tiên. -
axs[1].bar()
: Vẽ biểu đồ cột vào biểu đồ con thứ hai.
10. Tổng Kết
Loại Biểu Đồ | Hàm Dùng |
---|---|
Biểu đồ đường | plt.plot() |
Biểu đồ cột | plt.bar() |
Biểu đồ tròn | plt.pie() |
Biểu đồ tán xạ | plt.scatter() |
Biểu đồ histogram | plt.hist() |
Vẽ nhiều biểu đồ | plt.subplots() |
Matplotlib là công cụ mạnh mẽ để trực quan hóa dữ liệu. Khi kết hợp với NumPy và Pandas, nó giúp phân tích dữ liệu một cách dễ dàng và trực quan.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com