Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để thay đổi màu đường với chỉ số dữ liệu cho biểu đồ đường trong matplotlib?

Để màu đường thay đổi theo chỉ số dữ liệu cho biểu đồ đường trong matplotlib, chúng ta có thể thực hiện các bước sau -

Các bước

  • Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô con.

  • Tạo các điểm dữ liệu x và y bằng cách sử dụng numpy.

  • Nhận giới hạn nhỏ hơn, dydx .

  • Nhận điểm phân đoạn điểm dữ liệu bằng cách sử dụng numpy.

  • Tạo một hình và một tập hợp các ô phụ.

  • Tạo một lớp, khi được gọi, sẽ chuẩn hóa tuyến tính dữ liệu thành một số phạm vi.

  • Đặt mảng hình ảnh từ mảng numpy * A * .

  • Đặt (các) độ rộng dòng cho bộ sưu tập.

  • Đặt thanh màu cho trục 1.

  • Tạo đối tượng Bản đồ màu từ danh sách các màu, tức là r, g và b.

  • Lặp lại các bước 6, 7, 8, 9 và 10.

  • Đặt giới hạn của trục X và Y.

  • Để hiển thị hình này, hãy sử dụng show () phương pháp.

Ví dụ

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()

Đầu ra

Nó sẽ tạo ra kết quả sau -

Làm cách nào để thay đổi màu đường với chỉ số dữ liệu cho biểu đồ đường trong matplotlib?