Python

[Jupyter Notebook] UserWarning: Glyph 49688 (\N{HANGUL SYLLABLE SU}) missing from current font.

xojuholic 2022. 12. 7.
728x90
반응형

matplotlib 사용 중 나타나는 경고 메시지를 제목으로 잡았는데, 제목 내 HANGUL이란 단어에서 유추 가능하듯이 한글이 깨지는 경우(==네모 '□'로 나타나는 경우) 발생하는 경고이다.

해당 경고를 없애기 위해 가열찬 구글링으로 찾아서 참고한 글은 아래의 글이다.

 

Ubuntu에서 Matplotlib 한글 폰트 설정 | Hooni's Playground

안적어두니 매번 까먹는다. 방법만 알면 간단하지만, 방법을 조금이라도 까먹으면 바로 삽질을 하게된다. Ubuntu 환경에서 나눔 폰트를 사용한다는 가정하에 다음의 방법을 따르면 된다. 나눔 폰

hooni-playground.com

 

경고를 없애기 전, 일단 맞닥트린 전체 경고 메시지 중 하나는 다음과 같다.

/usr/local/lib/python3.10/dist-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 49688 (\N{HANGUL SYLLABLE SU}) missing from current font.
  fig.canvas.print_figure(bytes_io, **kw)

 

그리고 경고를 유발한 코드이다.

      1 import matplotlib.pyplot as plt
      2
      3 # 그래프 명
----> 4 plt.title('요일별 수강 완료 수강생 수')	# 경고 유발행
      5
      6 # 그래프 x축 레이블
----> 7 plt.xlabel('요일')			# 경고 유발행
      8
      9 # 그래프 y축 레이블
---> 10 plt.ylabel('수강생(명)')		# 경고 유발행

 

경고 메시지 중 {HANGUL SYLLABLE SU} 내용을 보고 눈치 빠른 사람은 아마 알아차렸을 터. 저 경고는 한글 '글자' 단위로 발생하여 아래와 같은 문구가 포함된 경고들이 화면에 뿌려지는 것을 보게 된다.

  • {HANGUL SYLLABLE SU}
  • {HANGUL SYLLABLE GANG}
  • {HANGUL SYLLABLE SAENG}
  • {HANGUL SYLLABLE MYEONG}
  • {HANGUL SYLLABLE YO}
  • {HANGUL SYLLABLE IL}
  • {HANGUL SYLLABLE BYEOL}
  • {HANGUL SYLLABLE WAN}
  • {HANGUL SYLLABLE RYO}

각설하고!

경고를 없애기 위하여 아래와 같이 차례로 코드를 작성하여 하나씩 확인한다 단, ①旣 로드되어 있는 Jupyter Notebook 종료, ②해당 OS 상에 나눔고딕 폰트 설치, fc-cache -fv 명령 실행, 그리고 ④Jupyter Notebook 再 기동 등의 순서로 미리 적용되어 있다는 것을 전제로 한다.

# 설치된 글꼴 이름 파악을 위해서!!
import matplotlib as mpl
from matplotlib import font_manager as fm
from matplotlib import rc

# 설정 파일 위치 확인
print(mpl.matplotlib_fname())
print(mpl.__file__)

# Jupyter Notebook 로드 시 같이 올라온 font 목록 확인
[f.fname for f in fm.fontManager.ttflist]	# NanumGothic.ttf 목록에서 확인 완료!!!

# NanumGothic 설정 확인
plt.rcParams['font.family'] = 'NanumGothic'
print(plt.rcParams['font.family'])		# NanumGothic 설정 제대로 먹힌 것을 확인!!!

# 마이너스(-)가 '□'로 깨지는 것을 방지하기 위하여 설정!!!
mpl.rcParams['axes.unicode_minus'] = False

# matplotlib 차트에 한글이 제대로 표시되는지 확인
plt.text(0.3, 0.3, '한글', size = 100)

 

상기 코드 중 마지막 구문을 통해 아래와 같이 차트가 나타나면, 한글 설정이 제대로  된 것이다.

Jupyter Notebook matplotlib 한글 설정 성공!

 

728x90
반응형
SMALL

댓글

💲 추천 글