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

matplotlib에서 특정 그림(figure)에만 로컬 rcParams를 설정하는 방법

matplotlib로 여러 개의 그래프를 작업할 때, 전역 설정을 바꾸지 않고 특정 그림(figure)에만 스타일을 다르게 적용하고 싶은 경우가 자주 있습니다. 이럴 때 유용한 것이 바로 plt.rc_context()입니다. 이 컨텍스트 관리자(context manager)를 사용하면 rcParams를 일시적으로 변경하고, 블록이 끝나면 원래 설정으로 자동 복원됩니다.

구현 단계

  • 그림 크기(figsize)를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.

  • 샘플 데이터의 개수를 저장할 변수 N을 초기화합니다.

  • numpy를 사용하여 x, y 데이터 포인트를 생성합니다.

  • plt.rc_context()를 통해 rcParams를 임시로 변경하는 컨텍스트 관리자를 만듭니다.

  • 현재 그림에 첫 번째 서브플롯(인덱스 1)을 추가합니다.

  • plot() 메서드로 x, y 데이터를 그립니다.

  • 현재 그림에 두 번째 서브플롯(인덱스 2)을 추가합니다.

  • plot() 메서드로 x, y 데이터를 그립니다.

  • show() 메서드로 그림을 화면에 표시합니다.

예제 코드

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

N = 10

x = np.random.rand(N)
y = np.random.rand(N)

with plt.rc_context({"axes.grid": True, "grid.linewidth": 0.75, "lines.linestyle": 'dashed'}):
    plt.subplot(121)
    plt.plot(x, y)

plt.subplot(122)
plt.plot(x, y)

plt.show()

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

matplotlib에서 특정 그림(figure)에만 로컬 rcParams를 설정하는 방법

동작 방식 설명

위 예제에서 왼쪽 서브플롯은 with plt.rc_context(...) 블록 안에서 그려졌기 때문에 격자(grid)가 표시되고 점선(dashed) 스타일의 선이 적용됩니다. 반면 오른쪽 서브플롯은 컨텍스트 블록 밖에서 그려졌으므로 기본 rcParams 설정이 그대로 적용되어 격자 없는 실선 그래프가 됩니다.

즉, rc_context 내부에서 변경된 설정은 해당 블록이 종료되는 순간 자동으로 원래 값으로 되돌아가므로, 전역 설정을 오염시키지 않으면서도 그림별로 세밀한 스타일 제어가 가능합니다. 이는 여러 그래프를 한 번에 비교하거나, 발표용·보고서용 그림에만 특정 테마를 적용할 때 특히 유용합니다.