Matplotlib에서 한글 폰트 깨짐 문제 해결하기

2025. 3. 5. 13:04·프로그래밍/모르는 코드 정리

 

Matplotlib에서 한글 폰트 깨짐 문제 해결하기

Matplotlib은 파이썬에서 데이터 시각화를 위한 강력한 라이브러리지만, 기본적으로 한글을 지원하지 않아 그래프에 한글을 표시하면 깨져 보이는 문제가 있습니다. 이 문제를 해결하기 위한 방법을 알아보겠습니다.

한글 깨짐 문제의 원인

Matplotlib은 기본적으로 영문 폰트를 사용하도록 설정되어 있어, 한글과 같은 비ASCII 문자를 제대로 렌더링하지 못합니다. 그래서 한글 텍스트가 깨지거나 네모 박스(□□□)로 표시됩니다.

해결 방법

1. 시스템에 설치된 한글 폰트 사용하기

가장 간단한 방법은 시스템에 이미 설치된 한글 폰트를 사용하는 것입니다:

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Malgun Gothic'  # Windows의 맑은 고딕
# 또는 'AppleGothic'  # macOS
# 또는 'NanumGothic'  # 나눔고딕이 설치된 경우
plt.rcParams['axes.unicode_minus'] = False  # 마이너스 기호 깨짐 방지

2. 다양한 환경에 대응하는 강건한 방법

위 코드에서 제시된 set_korean_font() 함수는 다양한 운영체제와 환경에서 한글 폰트를 찾아 설정하는 강건한 방법을 구현했습니다. 이 함수는:

  1. Windows, Mac, Linux 등 여러 운영체제의 기본 폰트 경로를 확인
  2. 시스템에 설치된 폰트 중 '맑은 고딕', '굴림', '나눔' 등의 키워드가 포함된 한글 폰트 검색
  3. 한글 폰트를 찾지 못하면 나눔 폰트 패키지 설치 시도
  4. 모든 방법이 실패하면 sans-serif 폰트로 대체

3. 외부 폰트 파일 직접 사용하기

특정 폰트 파일을 직접 지정하여 사용할 수도 있습니다:

from matplotlib import font_manager

font_path = 'path/to/your/korean_font.ttf'  # 폰트 파일 경로
font_prop = font_manager.FontProperties(fname=font_path)

plt.title('한글 제목', fontproperties=font_prop)

4. 폰트 패키지 설치하기

파이썬 패키지로 제공되는 한글 폰트를 설치할 수도 있습니다:

# 터미널에서 실행
pip install matplotlib-korean-fonts

실제 사용 예시

import matplotlib.pyplot as plt
import numpy as np

# 한글 폰트 설정 함수 호출
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Malgun Gothic'  # Windows의 맑은 고딕
# 또는 'AppleGothic'  # macOS
# 또는 'NanumGothic'  # 나눔고딕이 설치된 경우
plt.rcParams['axes.unicode_minus'] = False  # 마이너스 기호 깨짐 방지


# 데이터 생성
x = np.arange(10)
y = np.random.randint(1, 10, 10)

# 그래프 그리기
plt.figure(figsize=(10, 6))
plt.bar(x, y)
plt.title('한글 제목이 깨지지 않습니다')
plt.xlabel('한글 x축 레이블')
plt.ylabel('한글 y축 레이블')
plt.savefig('korean_graph.png')
plt.show()

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 > 모르는 코드 정리' 카테고리의 다른 글

Python을 활용한 TCP 소켓 통신의 이해와 구현  (0) 2025.03.12
Python의 vars()와 ** 연산자: 객체 속성 다루기의 효율적인 방법  (0) 2024.12.30
'프로그래밍/모르는 코드 정리' 카테고리의 다른 글
  • Python을 활용한 TCP 소켓 통신의 이해와 구현
  • Python의 vars()와 ** 연산자: 객체 속성 다루기의 효율적인 방법
인공지능수학공부방
인공지능수학공부방
경제, 문화, 과학, IT
  • 인공지능수학공부방
    JIN의 스토리
    인공지능수학공부방
  • 전체
    오늘
    어제
    • 스토리 (17)
      • 인공지능 글 (1)
      • 독서 (6)
      • 인공지능 공부 (6)
        • 수학 및 통계 (3)
        • 모델 (3)
      • 인공지능 논문 (0)
        • Object detection (0)
      • 기타 (0)
      • 프로그래밍 (4)
        • 기타 (1)
        • 모르는 코드 정리 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    캐딜락
    파울로 코엘료
    피터드러커
    연금술사
    사업은 무엇인가
    경영
    피터 드러커
    매니지먼트
    마케팅
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
인공지능수학공부방
Matplotlib에서 한글 폰트 깨짐 문제 해결하기
상단으로

티스토리툴바