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

จะเปลี่ยนสีเส้นด้วยดัชนีข้อมูลสำหรับกราฟเส้นใน matplotlib ได้อย่างไร?


เพื่อให้สีของเส้นแตกต่างไปตามดัชนีข้อมูลสำหรับกราฟเส้นใน matplotlib เราสามารถทำตามขั้นตอนต่อไปนี้ -

ขั้นตอน

  • กำหนดขนาดรูปและปรับช่องว่างภายในระหว่างและรอบๆ แผนผังย่อย

  • สร้างจุดข้อมูล x และ y โดยใช้ numpy

  • รับขีดจำกัดที่น้อยลง dydx .

  • รับ คะแนน และกลุ่ม จุดข้อมูลโดยใช้ numpy

  • สร้างร่างและชุดแผนย่อย

  • สร้างคลาสซึ่งเมื่อถูกเรียก จะทำให้ข้อมูลเป็นเส้นตรงในบางช่วง

  • ตั้งค่าอาร์เรย์รูปภาพจากอาร์เรย์ numpy *A* .

  • ตั้งค่า linewidth สำหรับคอลเลกชัน

  • ตั้งค่าแถบสีสำหรับแกน 1

  • สร้างวัตถุ Colormap จากรายการสีเช่น r, g และ b.

  • ทำซ้ำขั้นตอนที่ 6, 7, 8, 9 และ 10

  • กำหนดขีดจำกัดของแกน X และ Y

  • หากต้องการแสดงรูป ให้ใช้ show() วิธีการ

ตัวอย่าง

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from matplotlib.colors import ListedColormap, BoundaryNorm

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

x = np.linspace(0, 3 * np.pi, 500)
y = np.sin(x)

dydx = np.cos(0.5 * (x[:-1] + x[1:]))
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)

fig, axs = plt.subplots(2, 1, sharex=True, sharey=True)
norm = plt.Normalize(dydx.min(), dydx.max())

lc = LineCollection(segments, cmap='viridis', norm=norm)
lc.set_array(dydx)
lc.set_linewidth(2)

line = axs[0].add_collection(lc)
fig.colorbar(line, ax=axs[0])
cmap = ListedColormap(['r', 'g', 'b'])
norm = BoundaryNorm([-1, -0.5, 0.5, 1], cmap.N)

lc = LineCollection(segments, cmap=cmap, norm=norm)
lc.set_array(dydx)
lc.set_linewidth(2)

line = axs[1].add_collection(lc)
fig.colorbar(line, ax=axs[1])

axs[0].set_xlim(x.min(), x.max())
axs[0].set_ylim(-1.1, 1.1)

plt.show()

ผลลัพธ์

มันจะสร้างผลลัพธ์ต่อไปนี้ -

จะเปลี่ยนสีเส้นด้วยดัชนีข้อมูลสำหรับกราฟเส้นใน matplotlib ได้อย่างไร?