Matplotlib으로 여러 개의 플롯을 반복문으로 그릴 때, 마커(marker)와 선(line)이 서로 다른 색상으로 표시되어 그래프를 해석하기 어려운 경우가 있습니다. 이 글에서는 플롯 루프 안에서 마커와 선에 동일한 색상을 적용하는 방법을 단계별로 살펴보겠습니다.
구현 단계
NumPy를 사용하여 m, n 크기와 x 데이터 포인트를 초기화합니다.
figure() 메서드로 새 그림(figure)을 생성하거나 기존 그림을 활성화합니다.
clf() 메서드로 현재 그림을 깨끗하게 지웁니다.
subplot() 메서드로 현재 그림에 서브플롯을 추가합니다.
itertools.cycle()을 이용해 반복 가능한 마커 종류('o', 'v', '^' 등)에서 마커를 순차적으로 가져옵니다.
1부터 n까지 범위를 반복(iterate)합니다.
plot() 메서드를 사용해 루프 안에서 선과 마커를 동일한 색상으로 함께 플롯합니다.
show() 메서드로 최종 그림을 화면에 표시합니다.
예제 코드
import numpy as np
import itertools
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
m = 5
n = 5
x = np.zeros(shape=(m, n))
plt.figure()
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
for i in range(1, n):
x = np.dot(i, [1, 1.1, 1.2, 1.3])
y = x ** 2
plt.plot(x, y, linestyle='', markeredgecolor='none',
marker=next(marker), alpha=1)
plt.plot(x, y, linestyle='-')
plt.show()실행 결과

참고: 색상을 명시적으로 통일하는 방법
위 코드에서는 두 번의 plot() 호출이 각각 기본 색상 사이클에서 새로운 색상을 가져오므로, 마커와 선의 색상이 달라질 수 있습니다. 두 요소의 색상을 확실하게 일치시키려면 color 파라미터를 직접 지정하는 것이 좋습니다.
for i in range(1, n):
x = np.dot(i, [1, 1.1, 1.2, 1.3])
y = x ** 2
c = next(plt.rcParams['axes.prop_cycle'].by_key()['color'])
plt.plot(x, y, linestyle='-', marker=next(marker), color=c)이렇게 하면 한 번의 plot() 호출로 선과 마커가 항상 같은 색상으로 그려지며, 코드도 더 간결해집니다.