Matplotlib에서 여러 개의 그래프를 그릴 때 각 선마다 색상과 선 스타일(line style)이 함께 바뀌도록 순환(cycle)시키고 싶은 경우가 있습니다. 이때 cycler 모듈을 활용하면 손쉽게 구현할 수 있습니다.
cycler는 두 개의 사이클러 객체를 더하기(+) 연산으로 결합하면, 각 데이터 계열이 그려질 때마다 색상과 선 스타일이 동시에 한 단계씩 순환됩니다. 아래 예제에서는 빨강·초록·파랑·노랑 네 가지 색상과 점선·일점쇄선·실선·파선 네 가지 선 스타일을 짝지어 순환시킵니다.
구현 단계
그림 크기 설정:
rcParams로 figure 크기를 지정하고, 서브플롯 사이와 주변의 여백(padding)을 자동으로 조정합니다.prop_cycle 설정:
cycler로 색상 목록과 선 스타일 목록을 결합하여axes.prop_cycle에 등록합니다.데이터 플롯:
plot()메서드를 호출할 때마다 등록된 순서대로 색상과 선 스타일이 자동 적용됩니다.그래프 표시:
show()메서드로 최종 결과를 화면에 출력합니다.
예제 코드
import matplotlib.pyplot as plt
from cycler import cycler
# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# 색상과 선 스타일을 결합한 prop_cycle 설정
plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y']) +
cycler('linestyle', [':', '-.', '-', '--'])))
# 데이터 포인트 그리기
plt.plot([0, 5, 2, 1])
plt.plot([2, 6, 3, 1])
plt.plot([3, 8, 5, 1])
plt.plot([4, 9, 0, 3])
plt.show()실행 결과
위 코드를 실행하면 첫 번째 선은 빨간색 점선(:), 두 번째 선은 초록색 일점쇄선(-.), 세 번째 선은 파란색 실선(-), 네 번째 선은 노란색 파선(--)으로 각각 다른 색상과 선 스타일이 적용되어 다음과 같은 그래프가 출력됩니다.

참고 사항
색상과 선 스타일의 개수가 다르면 더 짧은 쪽 기준으로 순환이 반복되므로, 두 목록의 길이를 맞춰주는 것이 좋습니다. 또한 cycler('color', ...) * cycler('linestyle', ...)처럼 곱하기(*) 연산을 사용하면 모든 조합의 데카르트 곱을 순환할 수도 있으니, 원하는 시각화 효과에 따라 연산자를 선택하면 됩니다.