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

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 2 tháng 2, 2025

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.

Website Logo

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.

Bình luận

Website Logo

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

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ