Dự án: dashboard bán hàng
Kết hợp biểu đồ đường, cột, histogram, chú thích và style thành một dashboard bán hàng 2 × 2.
Giới thiệu
Dự án này gom toàn bộ khóa học lại: bốn biểu đồ trong một hình, mỗi biểu đồ trả lời một câu hỏi về cùng một bộ dữ liệu bán hàng. Một style thống nhất và tiêu đề rõ ràng giúp dashboard dễ đọc ngay từ cái nhìn đầu tiên.
plt.style.use đặt màu sắc và phông chữ cho cả hình. Mỗi ô trả lời một câu hỏi: doanh thu tăng thế nào (đường, có chú thích tháng cao nhất), có bao nhiêu đơn hàng (cột), sản phẩm nào bán chạy (cột ngang đã sắp xếp) và giá trị đơn hàng thường ở mức nào (histogram). color="C1" chọn màu thứ hai của style để mỗi ô một màu, còn margins chừa chỗ cho nhãn. suptitle đặt tiêu đề cho cả hình và tight_layout giữ các ô không chồng lên nhau. Hãy thử style khác như "fivethirtyeight" hoặc "bmh".
Trình mô phỏng tương tác
Đổi style để thay giao diện cả dashboard cùng lúc, và chọn một ô để xem đoạn code vẽ ra nó.
Ví dụ Matplotlib chạy được
import matplotlib.pyplot as plt
import numpy as np
plt.style.use("ggplot")
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = np.array([42, 48, 45, 58, 63, 70])
orders = np.array([310, 340, 330, 400, 420, 465])
products = {"Other": 14, "Tablets": 17, "Phones": 31, "Laptops": 38}
order_values = np.random.default_rng(8).gamma(4, 30, 465)
fig, axes = plt.subplots(2, 2, figsize=(10, 7))
fig.suptitle("Sales dashboard, first half of the year", fontsize=14)
axes[0, 0].plot(months, revenue, marker="o")
best = revenue.argmax()
axes[0, 0].annotate(f"{revenue[best]}k", (best, revenue[best]), xytext=(0, 8), textcoords="offset points", ha="center")
axes[0, 0].margins(y=0.2)
axes[0, 0].set_title("Revenue (k$)")
axes[0, 1].bar(months, orders, color="C1")
axes[0, 1].set_title("Orders")
axes[1, 0].barh(list(products), list(products.values()), color="C2")
axes[1, 0].set_title("Share of sales (%)")
axes[1, 1].hist(order_values, bins=20, color="C4", edgecolor="white")
axes[1, 1].set_title("Order value ($)")
fig.tight_layout()
plt.show()
