ภาพรวม
ใช้ fill_between() วนลูปสร้างชั้นสีหลายชั้น ใต้เส้นโค้ง เพื่อเอฟเฟกต์สีรุ้ง
ขั้นตอนการทำงาน
- กำหนดขนาดฟิกเกอร์
- สร้างฟังก์ชัน
plot_rainbow_under_curve() - กำหนดรายการสีรุ้ง 7 สี
- สร้างข้อมูล x ด้วย
np.linspace() - วนลูป 0-6: พลอตเส้นโค้งและ
fill_betweenเลื่อนขึ้นทีละชั้น - แสดงผล
ตัวอย่างโค้ด
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
def plot_rainbow_under_curve():
rainbow_colors = ['violet', 'indigo', 'blue', 'green', 'yellow', 'orange', 'red']
x = np.linspace(-5, 5, 100)
for i in range(7):
plt.plot(x, x ** 2, lw=0)
plt.fill_between(x, x ** 2 + len(rainbow_colors) - i, color=rainbow_colors[i])
plot_rainbow_under_curve()
plt.show()
ผลลัพธ์
พื้นที่ใต้เส้นโค้ง y=x² ถูกเติมสีรุ้ง 7 ชั้น

เทคนิคที่ดีกว่า: Gradient Fill
# ใช้ imshow หรือ pcolormesh สำหรับ gradient สม่ำเสมอ
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5, 5, 400)
y = x ** 2
fig, ax = plt.subplots()
ax.plot(x, y, 'k-', lw=2)
# สร้าง gradient ด้วย imshow
extent = [x.min(), x.max(), 0, y.max()]
gradient = np.linspace(0, 1, 256).reshape(-1, 1)
ax.imshow(gradient, extent=extent, aspect='auto', cmap='rainbow', alpha=0.5)
plt.show()
สรุป
- วิธี fill_between แบบลูป: เข้าใจง่าย เหมาะชั้นสีแยกชัดเจน
- วิธี imshow: gradient สม่ำเสมอ สวยกว่า ประสิทธิ์ดีกว่า