ใช้ plt.fill_between() เติมสีพื้นที่ระหว่าง Upper และ Lower Bound ของ Confidence Interval
ขั้นตอน
- ตั้งค่าขนาด Figure
- สร้างข้อมูล X, Y
- คำนวณ Confidence Interval (ตัวอย่างใช้สูตรง่าย)
- Plot เส้นหลัก
- เติมสีพื้นที่ CI ด้วย
fill_between - แสดงผล
ตัวอย่างโค้ด
from matplotlib import pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.arange(0, 10, 0.05)
y = np.sin(x)
# คำนวณ CI แบบง่าย (ตัวอย่าง)
ci = 0.1 * np.std(y) / np.mean(y)
plt.plot(x, y, color='black', lw=7)
# fill_between: x, lower, upper
plt.fill_between(x, (y-ci), (y+ci), color='blue', alpha=0.5)
plt.show()
การคำนวณ CI ที่ถูกต้องทางสถิติ
import scipy.stats
# สำหรับ Mean CI (t-distribution)
def mean_confidence_interval(data, confidence=0.95):
n = len(data)
mean = np.mean(data)
se = scipy.stats.sem(data)
h = se * scipy.stats.t.ppf((1 + confidence) / 2., n-1)
return mean, mean-h, mean+h
# สำหรับ Regression Line CI
# ใช้ statsmodels หรือ sklearn
การปรับแต่ง Fill Between
plt.fill_between(x, y_lower, y_upper,
color='blue', alpha=0.3,
label='95% CI',
hatch='//', edgecolor='blue')
plt.legend()
ผลลัพธ์
เส้น Sine Wave สีดำหนา พร้อมบริเวณเงาสีฟ้าครึ่งโปร่งแทน 95% CI