Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีเติมสีรุ้ง (Rainbow Color) ใต้เส้นโค้งใน Python Matplotlib

ภาพรวม

ใช้ 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 ชั้น

วิธีเติมสีรุ้ง (Rainbow Color) ใต้เส้นโค้งใน Python Matplotlib วิธีเติมสีรุ้ง (Rainbow Color) ใต้เส้นโค้งใน Python Matplotlib

เทคนิคที่ดีกว่า: 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 สม่ำเสมอ สวยกว่า ประสิทธิ์ดีกว่า