เพื่อให้สีของเส้นแตกต่างไปตามดัชนีข้อมูลสำหรับกราฟเส้นใน 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()
ผลลัพธ์
มันจะสร้างผลลัพธ์ต่อไปนี้ -