Matplotlib ระดับสูง

ฮีตแมปด้วย imshow และชุดสี

วาดฮีตแมปของตาราง 2 มิติด้วย ax.imshow ชุดสี แถบสี และค่าในแต่ละช่อง

บทนำ

ฮีตแมประบายสีแต่ละช่องของตารางตามค่า รูปแบบตามแถวและคอลัมน์จึงเห็นได้ทันที ax.imshow วาดอาร์เรย์ 2 มิติเป็นช่องสี ชุดสี (cmap) แปลงตัวเลขเป็นสี และ fig.colorbar แสดงสเกลสี

visits เป็นอาร์เรย์ขนาด 7 × 6 หนึ่งแถวต่อวันและหนึ่งคอลัมน์ต่อช่วงเวลา imshow วาดแถว 0 ไว้บนสุด และ set_xticks / set_yticks ตั้งชื่อคอลัมน์และแถว ลูปซ้อนเขียนค่าลงในแต่ละช่องด้วย ax.text(คอลัมน์, แถว, ...) ชุดสีแบบลำดับอย่าง viridis เหมาะกับค่าจากต่ำไปสูง ส่วนแบบแยกสองทางอย่าง coolwarm เหมาะกับค่าที่สูงหรือต่ำกว่าค่ากลาง

ตัวแสดงภาพแบบโต้ตอบ

ลองชุดสีอื่น ซ่อนตัวเลขและแถบสี ชุดสีที่ดีช่วยให้แยกค่าสูงกับค่าต่ำได้ง่าย

ตัวอย่าง Matplotlib ที่รันได้

Matplotlib
รันโค้ด →
main.py
import matplotlib.pyplot as plt
import numpy as np

days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
hours = ["6am", "9am", "12pm", "3pm", "6pm", "9pm"]
rng = np.random.default_rng(2)
visits = rng.integers(5, 60, size=(len(days), len(hours)))

fig, ax = plt.subplots(figsize=(7, 4))
image = ax.imshow(visits, cmap="viridis")
ax.set_xticks(range(len(hours)), hours)
ax.set_yticks(range(len(days)), days)
for row in range(len(days)):
    for col in range(len(hours)):
        ax.text(col, row, visits[row, col], ha="center", va="center", color="white", fontsize=8)
fig.colorbar(image, label="Visits")
ax.set_title("Website visits by day and hour")
plt.show()
สร้างปุ่ม Run สำหรับตัวอย่างนี้ กราฟที่โค้ดนี้วาด
ฮีตแมปด้วย imshow และชุดสี