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

Matplotlib에서 범례 글꼴 이름을 변경하는 방법

Matplotlib에서 범례(legend)의 글꼴 이름(fontname)을 변경하고 싶다면, legend.get_texts()로 범례 텍스트 객체에 접근한 뒤 각 항목의 속성을 수정하는 방식으로 간단하게 처리할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.

범례 글꼴 변경 단계

  • figure.figsize를 설정해 그림 크기를 지정하고, figure.autolayout으로 서브플롯 주변 여백(padding)을 자동 조정합니다.

  • NumPy를 사용해 x 데이터 포인트를 생성합니다.

  • plot() 메서드로 x, sin(x), cos(x) 그래프를 그립니다.

  • legend() 메서드를 호출해 범례를 원하는 위치에 배치합니다.

  • legend.get_texts()를 순회하면서 각 텍스트 객체의 글꼴 이름을 set_fontname()으로 업데이트합니다.

  • show() 메서드를 사용해 최종 그림을 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

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

x = np.linspace(-5, 5, 100)

plt.plot(x, np.sin(x), label="$y=sin(x)$")
plt.plot(x, np.cos(x), label="$y=cos(x)$")

legend = plt.legend(loc='upper right')

i = 1
for t in legend.get_texts():
    # 범례 텍스트 변경
    t.set_text("name %d" % i)
    # 범례 글꼴 이름 변경
    t.set_fontname("Times New Roman")
    i += 1

plt.show()

코드 설명

위 예제에서는 먼저 NumPy의 linspace로 -5부터 5까지 100개의 균일한 x 값을 생성한 뒤, 사인 곡선과 코사인 곡선을 하나의 그래프에 함께 그렸습니다. 이후 plt.legend(loc='upper right')로 범례를 오른쪽 상단에 배치했습니다.

핵심 부분은 for t in legend.get_texts(): 루프입니다. get_texts()는 범례에 포함된 텍스트 객체(Text) 목록을 반환하며, 각 객체에 대해 다음 작업을 수행할 수 있습니다.

  • t.set_text(): 범례 항목의 표시 문자열을 변경합니다. 위 예제에서는 "name 1", "name 2"로 바꿉니다.

  • t.set_fontname(): 해당 범례 항목의 글꼴 이름을 지정합니다. "Times New Roman", "Arial", "Courier New" 등 시스템에 설치된 폰트를 사용할 수 있습니다.

만약 범례 전체의 글꼴을 한 번에 지정하고 싶다면, 범례 생성 시 prop 인자를 활용하는 방법도 있습니다.

legend = plt.legend(loc='upper right', prop={'family': 'Times New Roman'})

이 방식은 개별 항목을 순회하지 않고도 모든 범례 텍스트의 글꼴을 일괄 적용할 수 있어 더욱 간편합니다.

실행 결과

코드를 실행하면 사인과 코사인 곡선이 그려진 그래프의 오른쪽 상단에 범례가 표시되며, 범례 항목의 텍스트는 "name 1", "name 2"로 변경되고 지정한 글꼴(Times New Roman)로 렌더링됩니다.