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

วิธีพลอตเส้นหลายสีแบบรุ้ง (Rainbow) ใน Matplotlib

การสร้างเส้นหลายสีแบบรุ้งใน Matplotlib สามารถทำได้โดยกำหนดรายการสี 7 สี (VIBGYOR) แล้ววนลูปพลอตเส้นแต่ละเส้นด้วยสีที่ต่างกัน พร้อมปรับตำแหน่ง Y ให้แตกต่างกันเล็กน้อย

ขั้นตอนการทำงาน

  1. นำเข้า numpy และ matplotlib.pyplot
  2. สร้างข้อมูลแกน X ด้วย np.linspace()
  3. กำหนดรายการสี 7 สี: ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]
  4. วนลูปด้วย for i in range(len(colors)):
  5. พลอตเส้นแต่ละเส้นด้วย plt.plot() โดย:
    • แกน Y: x + i/20 (เลื่อนขึ้นทีละนิด)
    • c=colors[i] สีจากรายการ
    • lw=7 ความหนาเส้น
    • marker='o' เครื่องหมายจุด
  6. แสดงผลด้วย plt.show()

ตัวอย่างโค้ด

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

x = np.linspace(-1, 1, 10)
colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]

for i in range(len(colors)):
    plt.plot(x, x + i/20, c=colors[i], lw=7, marker='o')

plt.show()

เทคนิคขั้นสูง: ใช้ Colormap

แทนที่จะกำหนดสีด้วยตนเอง สามารถใช้ Colormap ของ Matplotlib ได้:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 10)
n_lines = 20
colors = plt.cm.rainbow(np.linspace(0, 1, n_lines))

for i, color in enumerate(colors):
    plt.plot(x, x + i/50, c=color, lw=3)

plt.show()

คำอธิบาย Colormap

  • plt.cm.rainbow - สีแบบรุ้ง
  • plt.cm.viridis - สีมาตรฐานวิทยาศาสตร์ (perceptually uniform)
  • plt.cm.plasma, inferno, magma - สีสำหรับ heatmap
  • np.linspace(0, 1, n) - สร้างค่า 0-1 จำนวน n ค่า สำหรับ mapping สี

การประยุกต์ใช้

เหมาะสำหรับการแสดงข้อมูลหลายชุดในกราฟเดียว การวาดกราฟฟังก์ชันหลายฟังก์ชัน หรือการสร้างภาพประกอบทางวิทยาศาสตร์ที่ต้องการความสวยงามและความชัดเจน