Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib 플롯 루프에서 마커와 선에 동일한 색상 지정하는 방법

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()

실행 결과

Matplotlib 플롯 루프에서 마커와 선에 동일한 색상 지정하는 방법

참고: 색상을 명시적으로 통일하는 방법

위 코드에서는 두 번의 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() 호출로 선과 마커가 항상 같은 색상으로 그려지며, 코드도 더 간결해집니다.