Menu
CoddyTech

Hình và trục

Thuộc phần Dữ liệu và biểu đồ trong hành trình Machine Learning của Coddy. Bài học 24 trên 60.

Code thực tế đặt tên cho biểu đồ mà nó vẽ. plt.subplots() trả về hai thứ: figure, toàn bộ hình ảnh, và axes, biểu đồ bên trong:

Sơ đồ: một khung màu xám có nhãn fig, biểu thị toàn bộ hình ảnh, chứa một khung màu xanh có nhãn ax, biểu thị biểu đồ. ax.set_title nằm phía trên, ax.set_xlabel nằm bên dưới, ax.set_ylabel nằm bên trái, ax.plot vẽ đường bên trong

fig, ax = nhận cả hai. Sau đó, mọi thao tác đều diễn ra trên ax:

years = [2021, 2022, 2023, 2024]
members = [35, 48, 61, 59]
fig, ax = plt.subplots()
ax.plot(years, members)
ax.set_title("Club Members")
ax.set_xlabel("Year")
ax.set_ylabel("Members")
plt.show()

Các phương thức vẽ giữ nguyên tên: ax.plot, ax.scatter, ax.legend. Các phương thức văn bản có thêm set_.

Vì sao cần làm vậy? Chẳng bao lâu nữa, một figure sẽ chứa nhiều biểu đồ, và ax cho biết bạn đang nói đến biểu đồ nào. Từ giờ trở đi, mọi biểu đồ đều bắt đầu theo cách này.

challenge icon

Thử thách

Trung bình

Đoạn code ban đầu vẽ biểu đồ bảy chi nhánh thư viện bằng các hàm (function) của plt: mỗi chi nhánh là một chấm. Viết lại theo dạng ax:

  1. Bắt đầu bằng fig, ax = plt.subplots().
  2. Vẽ các chấm, tiêu đề và cả hai nhãn bằng các phương thức của ax, giữ nguyên văn bản.
  3. Xóa các dòng plt cũ, giữ lại plt.show().

Biểu đồ vẫn giữ nguyên, chỉ có code thay đổi. Báo cáo của đoạn code ban đầu ghi Drawn with fig and ax: no. Kết quả của bạn phải là:

Charts drawn: 1
Drawn with fig and ax: yes
Title: Library Branches
X label: Hours open per week
Y label: Loans per week
Lines: 0
Dots: 7
Across (x): [30, 45, 38, 52, 24, 60, 41]
Up (y): [410, 690, 520, 800, 300, 930, 610]

Tự làm thử

import matplotlib.pyplot as plt

# Mỗi chi nhánh của thư viện thành phố có một giá trị
hours = [30, 45, 38, 52, 24, 60, 41]
loans = [410, 690, 520, 800, 300, 930, 610]

# Viết lại biểu đồ này bằng fig, ax = plt.subplots() và các phương thức (method) của ax
plt.scatter(hours, loans)
plt.title("Library Branches")
plt.xlabel("Hours open per week")
plt.ylabel("Loans per week")
plt.show()
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Dữ liệu và biểu đồ

Tự luyện tập: Trình biên dịch Python online