Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

matplotlib의 선 그래프에 대한 데이터 인덱스로 선 색상을 변경하는 방법은 무엇입니까?

<시간/>

matplotlib의 선 그래프에 대한 데이터 인덱스에 따라 선 색상이 달라지도록 하려면 다음 단계를 수행할 수 있습니다. -

단계

  • Figure 크기를 설정하고 서브플롯 사이와 주변의 패딩을 조정합니다.

  • numpy를 사용하여 x 및 y 데이터 포인트를 만듭니다.

  • 더 작은 한도 가져오기, dydx .

  • 포인트 받기 및 세그먼트 numpy를 사용하는 데이터 포인트.

  • Figure와 서브플롯 세트를 생성합니다.

  • 호출될 때 데이터를 일부 범위로 선형적으로 정규화하는 클래스를 만듭니다.

  • numpy 배열 *A*에서 이미지 배열 설정 .

  • 컬렉션의 선폭을 설정합니다.

  • 축 1의 컬러바를 설정합니다.

  • 색상 목록, 즉 r, g 및 b에서 Colormap 개체를 생성합니다.

  • 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의 선 그래프에 대한 데이터 인덱스로 선 색상을 변경하는 방법은 무엇입니까?