🔬 Bài 24: Trực quan hóa dữ liệu với matplotlib
plt.bar, plt.plot, plt.scatter để vẽ biểu đồ; thêm tiêu đề và nhãn trục; và nhận ra khi nào một biểu đồ "nói dối" — ngay trên trình duyệt.1. Ba loại biểu đồ — chọn đúng loại
Mỗi loại biểu đồ kể một câu chuyện khác nhau: cột (bar) để so sánh các nhóm; đường (plot) để xem thay đổi theo thời gian; rải (scatter) để xem hai đại lượng có liên quan không. Chọn sai loại sẽ làm người xem hiểu nhầm.
matplotlib vẽ lên một Figure (khung tranh) chứa một hay nhiều Axes (hệ trục). Bạn ra lệnh như plt.bar(x, y), sau đó matplotlib chuyển thành hình ảnh. Trong bài này ta xuất hình ra trực tiếp trên trang.
import matplotlib.pyplot as plt ten = ["An", "Binh", "Chi"] diem = [8.5, 7.0, 9.2] plt.bar(ten, diem) plt.title("Diem cac ban") plt.show()
Trong bài báo khoa học, mỗi hình phải có nhãn trục và đơn vị rõ ràng, chú thích (legend) khi có nhiều đường, và thường kèm thanh sai số (error bar). Hình "đẹp" nhưng thiếu nhãn là hình vô dụng.
2. Trung thực khi trực quan hóa
Một thủ thuật hay gặp: cắt bỏ phần dưới của trục dọc để chênh lệch nhỏ trông như khổng lồ. Cùng con số 50 và 52, nếu trục bắt đầu từ 49 thì cột sau trông cao gấp mấy lần — dù thực tế chỉ hơn 4%.
Trong matplotlib, phạm vi trục được đặt bằng plt.ylim(thap, cao). Với biểu đồ cột, quy tắc an toàn là để trục y bắt đầu từ 0. Với biểu đồ đường thì có thể linh động hơn, nhưng luôn phải ghi rõ phạm vi.
Trực quan hóa trung thực là một phần của đạo đức nghiên cứu. Một hình gây hiểu lầm có thể khiến người đọc rút ra kết luận sai, ngay cả khi số liệu "đúng". Người bình duyệt (reviewer) thường soi rất kỹ phạm vi trục.
3. Thêm nhãn, tiêu đề, chú thích
Một biểu đồ tốt phải "tự kể chuyện": người xem nhìn là hiểu ngay, không cần hỏi. Vì vậy luôn thêm tiêu đề (title), tên trục (xlabel, ylabel), và chú thích (legend) khi có nhiều đường.
plt.xlabel("Ban") plt.ylabel("Diem") plt.ylim(0, 10) # truc y bat dau tu 0 plt.legend(["Lop 6A"])
4. Bảng ghi nhớ: lệnh matplotlib
| Viết | Ý nghĩa |
|---|---|
plt.bar(x, y) | Biểu đồ cột — so sánh nhóm |
plt.plot(x, y) | Biểu đồ đường — xu hướng |
plt.scatter(x, y) | Biểu đồ rải — quan hệ |
plt.title(...) | Thêm tiêu đề |
plt.xlabel/ylabel | Đặt tên trục ngang/dọc |
plt.ylim(0, ...) | Đặt phạm vi trục y (nên từ 0) |
plt.show() | Hiển biểu đồ |
✎ Kiểm tra nhanh (5 câu)
1. Thư viện thường dùng để vẽ biểu đồ trong Python là:
import matplotlib.pyplot as plt.2. Để so sánh điểm của từng bạn (các nhóm riêng biệt), loại biểu đồ phù hợp nhất là:
3. Để xem xu hướng nhiệt độ thay đổi theo các ngày, ta nên dùng:
plot) thể hiện thay đổi liên tục theo thời gian.4. Hai cột là 50 và 52. Để biểu đồ cột trung thực, trục dọc nên:
5. Lệnh nào đặt tên cho trục dọc?
ylabel = y label = tên trục dọc; xlabel là trục ngang.💻 Thực hành: vẽ biểu đồ thật
🔌 Python chưa khởi động. Bấm "Khởi động Python" để bắt đầu.
(biểu đồ và kết quả sẽ hiện ở đây sau khi chạy)
ax.bar thành ax.plot (biểu đồ đường), rồi thử bỏ dòng set_ylim(0, 10) — bạn thấy biểu đồ thay đổi cảm giác như thế nào?