ผสมกราฟเส้นปกติกับ ax.axvspan เพื่อทาสีพื้นหลังเฉพาะช่วง จะช่วยเน้นสัปดาห์ที่มีแคมเปญใหญ่หรือช่วงพีคที่ต้องการให้คนสนใจ
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dates = pd.date_range("2024-04-01", periods=30, freq="D")
sessions = np.random.poisson(lam=500, size=len(dates)) + np.linspace(0, 80, len(dates))
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(dates, sessions, color="#6366f1", linewidth=2)
campaign_start = pd.Timestamp("2024-04-10")
campaign_end = pd.Timestamp("2024-04-18")
ax.axvspan(campaign_start, campaign_end, color="#fbbf24", alpha=0.2, label="แคมเปญ")
ax.set_ylabel("จำนวนเซสชัน")
ax.set_title("ทราฟฟิกต่อวันพร้อมช่วงแคมเปญ")
ax.legend(loc="upper left")
ax.grid(alpha=0.3)
fig.tight_layout()
plt.show()

วิธีอ่านให้ได้สาระ #
- ใช้สีอ่อนกว่าสีเส้นหลัก เพื่อไม่ให้ช่วงที่ระบายเด่นเกินและบดบังข้อมูล
- หากมีหลายช่วง ให้แยกสีหรือใช้ลายเฉียงต่างกันเพื่อบอกความแตกต่าง
- เพิ่มคำอธิบายสั้นๆ เช่นชื่ออีเวนต์หรือมาตรการไว้ใกล้ช่วงนั้น จะช่วยเป็นบันทึกสำหรับการวิเคราะห์ภายหลัง