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()
출력
다음 출력을 생성합니다 -