Matplotlib에서 하나의 선을 그리면서 색상이 지속적으로 바뀌는 효과를 구현하려면, 선을 여러 구간으로 나누어 각 구간마다 다른 색상으로 그리는 방법을 사용할 수 있습니다. 아래 단계를 따라 진행해 보세요.
구현 단계
- 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
- NumPy를 사용하여 x, y 데이터 포인트를 생성합니다.
- figure와 subplot 객체를 생성합니다.
- 인덱스를 일정 간격으로 반복(iterate)하면서 데이터를 순회합니다.
- 반복문 안에서 무작위(random) 색상을 생성하고, 해당 색상으로 x, y 데이터를 구간별로 플로팅합니다.
show()메서드를 호출하여 그림을 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt
import numpy as np
import random
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(1, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
for i in range(0, 100, 5):
r = random.random()
b = random.random()
g = random.random()
color = (r, g, b)
ax.plot(x[i:i+5+1], y[i:i+5+1], c=color, lw=7)
plt.show()코드 설명
np.linspace(1, 10, 100)은 1부터 10까지 100개의 균등한 간격의 값을 가진 x 배열을 생성하고, y = np.sin(x)는 이에 대응하는 사인 함수 값을 만듭니다.
핵심은 for 반복문입니다. 인덱스를 5씩 증가시키면서 슬라이싱(x[i:i+6])으로 작은 구간을 잘라내고, 매번 random.random()으로 R, G, B 값을 무작위로 생성하여 RGB 튜플 형태의 색상을 만듭니다. 이렇게 잘라낸 구간을 각각 다른 색상으로 그리면, 전체적으로 보았을 때 한 줄이 연속적으로 색상이 변하는 것처럼 보이게 됩니다. lw=7 옵션은 선 두께를 7로 지정하여 색상 변화를 더욱 뚜렷하게 보여줍니다.
실행 결과
위 코드를 실행하면 사인 곡선이 여러 가지 무작위 색상으로 자연스럽게 이어져 그려지며, 마치 무지개처럼 색상이 변화하는 하나의 선 그래프가 완성됩니다.