Nerdy

Matplotlib 한글 깨짐 현상 해결방법 본문

Error Correction/Python

Matplotlib 한글 깨짐 현상 해결방법

뚱인데요? 2022. 6. 21. 00:00
728x90

레이블과 제목에 한글을 넣게 되면 한글깨짐 현상이 발생한다. 이 문제를 해결하기 위해서는 한글깨짐 방지 세팅이 필요하다.

먼저 산점도 그래프를 만들어본다.

 

 

# 사용된 라이브러리 모듈

import numpy as np
import matplotlib.pyplot as plt

 

# 산점도 그래프 생성

np.random.seed(0)

n = 30
x = np.random.rand(n)
y = np.random.rand(n)

plt.scatter(x, y)
plt.title('test scatter')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True) # 격자 표시
plt.show()

 

# 결과

산점도 그래프 작성을 위한 파이썬 코드를 돌려보면 위의 이미지처럼 아주 잘 나온다.

 

하지만 xlabel, ylabel, 그리고 title에 영어 문자열이 아닌 한글 문자열을 넣으면 문제가 발생한다.

 

 

# 산점도 그래프 생성(한글 문자열 입력)

np.random.seed(0)

n = 30
x = np.random.rand(n)
y = np.random.rand(n)

plt.scatter(x, y)
plt.title('산점도 그래프')
plt.xlabel('엑스')
plt.ylabel('와이')
plt.grid(True) # 격자 표시
plt.show()

 

# 결과

# 에러 내용

C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:749: UserWarning: Glyph 44536 (\N{HANGUL SYLLABLE GEU}) missing from current font.
  func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:749: UserWarning: Glyph 47000 (\N{HANGUL SYLLABLE RAE}) missing from current font.
  func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:749: UserWarning: Glyph 54532 (\N{HANGUL SYLLABLE PEU}) missing from current font.
  func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:749: UserWarning: Glyph 50641 (\N{HANGUL SYLLABLE EG}) missing from current font.
  func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:749: UserWarning: Glyph 49828 (\N{HANGUL SYLLABLE SEU}) missing from current font.
  func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:749: UserWarning: Glyph 50752 (\N{HANGUL SYLLABLE WA}) missing from current font.
  func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:749: UserWarning: Glyph 51060 (\N{HANGUL SYLLABLE I}) missing from current font.
  func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:1705: UserWarning: Glyph 50641 (\N{HANGUL SYLLABLE EG}) missing from current font.
  return self.func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:1705: UserWarning: Glyph 49828 (\N{HANGUL SYLLABLE SEU}) missing from current font.
  return self.func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:1705: UserWarning: Glyph 50752 (\N{HANGUL SYLLABLE WA}) missing from current font.
  return self.func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:1705: UserWarning: Glyph 51060 (\N{HANGUL SYLLABLE I}) missing from current font.
  return self.func(*args)
C:\Users\tjoeun9\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:1705: UserWarning: Glyph 49328 (\N{HANGUL SYLLABLE SAN}) missing from current font.

 

한글로 표현되어야 할 제목과 x, y 레이블이 빈 네모로 표현이 되었다. 이 문제를 해결하기 위해서는 코드에 사용할 한글 폰트의 경로를 넣어준 후 그 폰트가 텍스트로 쓰여지게 해야 한다.

 

이전에 올린 '젤렌스키 대통령 연설문 Wordcloud 만들기' 게시글에 폰트 정보를 확인하는 방법을 적어놨으니 확인해보면 된다.

 

https://whiplash-bd.tistory.com/32

 

[Python] 젤렌스키 대통령 연설문 Wordcloud 만들기

# 텍스트 데이터 해당 텍스트 파일은 이번 러시아 침공으로 인해 젤렌스키 우크라이나 대통령이 연설한 내용을 담은 파일이다. 연설문 텍스트 파일을 활용해 단어 시각화인 word cloud를 만들어본

whiplash-bd.tistory.com

 

간단하게 설명하면 윈도우 사용자 한에 'C:\Windows\Fonts' 경로를 들어간 뒤 자신이 사용하고자 할 폰트를 오른쪽 마우스 버튼을 클릭한 뒤 속성을 들어가면 사용할 폰트의 영문명을 얻을 수 있다.

 

사용할 폰트명을 찾았으면 아래 파이썬 코드처럼 넣어주면 된다.

from matplotlib import font_manager, rc # 폰트 세팅을 위한 모듈 추가
font_path = "C:/Windows/Fonts/malgun.ttf" # 사용할 폰트명 경로 삽입
font = font_manager.FontProperties(fname = font_path).get_name()
rc('font', family = font)

 

# 최종 결과

 

728x90