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

วิธีตั้งค่าสี Marker และ Line ให้ตรงกันใน Loop Matplotlib


ภาพรวม

สาธิตการพลอตหลายเส้นใน Loop ให้ Marker และ Line มีสีตรงกัน โดยใช้ Iterator สำหรับ Marker

ขั้นตอน

  1. ตั้งค่า m, n และข้อมูล X
  2. สร้าง Figure, Subplot
  3. สร้าง Marker Cycle ด้วย itertools.cycle()
  4. วนลูป พลอต Marker ก่อน (linestyle='') แล้วค่อย Line (linestyle='-') ด้วย Marker เดียวกัน

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

import numpy as np
import itertools
from matplotlib import pyplot as plt

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

m = 5
n = 5
x = np.zeros(shape=(m, n))

plt.figure()
plt.clf()
plt.subplot(111)

marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))

for i in range(1, n):
    x = np.dot(i, [1, 1.1, 1.2, 1.3])
    y = x ** 2
    plt.plot(x, y, linestyle='', markeredgecolor='none', marker=next(marker), alpha=1)
    plt.plot(x, y, linestyle='-')

plt.show()

ผลลัพธ์

กราฟ 4 เส้น (i=1..4) แต่ละเส้นมี Marker และ Line สีเดียวกัน Marker ต่างกัน

วิธีที่ดีกว่า (Auto Color Cycle)

for i in range(1, n):
    x = np.dot(i, [1, 1.1, 1.2, 1.3])
    y = x ** 2
    plt.plot(x, y, marker=next(marker), linestyle='-')  # สีอัตโนมัติตรงกัน

Matplotlib จะจัดการสี ให้ Marker และ Line ตรงกันอัตโนมัติ