jupyter notebook 웹기반 플랫폼들은 기본적으로 한글을 지원하지 않아서 한글 패치를 해주어야 하는데, 구글 colab의 시각화 라이브러리(matplotlib)도 한글 폰트를 지원하지 않기 때문에 한글이 깨져서 나오게 된다.
일단 matplotlib을 import한다.
'%matplotlib inline'의 의미는 코랩을 실행한 브라우저 자체(inline)에서 그림을 그려서 보겠다는 것이다.
%matplotlib inline import matplotlib.pyplot as plt import matplotlib as mpl
plt.figure(figsize=(10, 6)) plt.plot([9, 10, 11, 12, 13, 14, 15], [100, 80, 60, 50, 60, 50, 30]) plt.title('내가 주식을 산 다음날', size=30) plt.xlabel('시간') plt.ylabel('만원') plt.show();
코랩 포함 jupyter notebook 플랫폼들은 한글을 지원하지 않기에 한글 폰트를 다운받아야 한다.
!apt-get install -y fonts-nanum* *를 끝에 붙이면 모든 나눔 글씨체를 받고, 붙이지 않으면 대표적인 몇개만.
이 중 원하는 폰트 이름을 'path' 마지막에 붙여 넣으면 된다.
버전이 업데이트 되면서 기존의 한글 사용 패치가 바뀌었다.
그리고 버전 업데이트 전에는 '-'(마이너스) 부호도 지원이 되지 않아서 패치를 해줘야 했는데 업데이트 이후로는 지원을 한다.
이전의 코드는 아래와 같았지만, 업데이트가 되면서 _rebuild() 속성이 더 이상 지원되지 않도록 바뀌게 되었다.
런타임 다시 시작:
이전:
!apt-get install fonts-nanum* -qq # 다운받은 후 코랩 런타임 다시 시작
plt.rcParams['axes.unicode_minus'] = False # 마이너스 부호 패치 path = '/usr/share/fonts/truetype/nanum/NanumGothicEco.ttf' # 나눔 폰트 경로 font_name = mpl.font_manager.FontProperties(fname=path).get_name() mpl.rc('font', family=font_name) mpl.font_manager._rebuild() # 버전이 업데이트 되면서 더 이상 _rebuild() 속성이 지원되지 않는다.
원래 font_manager 모듈 _rebuild()는 폰트의 캐시를 재설정하는 역할을 했는데, 업데이트 이후는 다른 방법으로 재설정을 한다. 폰트를 내려받은 후 캐시 재설정을 하는 코드도 같이 실행한 후, 코랩 런타임 다시 시작을 하면 된다.
업데이트 후:
!apt-get install -y fonts-nanum* !rm -rf /root/.cache/matplotlib/* # 폰트 캐시 재설정
# 런타임 다시 시작 후 실행 %matplotlib inline import matplotlib.pyplot as plt import matplotlib as mpl # path = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf' font_name = mpl.font_manager.FontProperties(fname=path).get_name() plt.rcParams['font.family'] = font_name
다시 그려보자.
plt.figure(figsize=(10, 6)) plt.plot([9, 10, 11, 12, 13, 14, 15], [100, 80, 60, 50, 60, 50, 30]) plt.title('내가 주식을 산 다음날', size=30) plt.xlabel('시간') plt.ylabel('만원') plt.show();
사실 오픈 소스라는 것이 이렇게 매번 업데이트로 바뀌고 없어지고 새로 생기는 등 변화를 지속하기에 어쩔 수가 없다. 그래도 간단한 방법이 있다면 또 써야지 않겠는가. '나는 반드시 나눔체를 써야한다'는 확고한 신념을 가지지 않는 이상, 간단하게 아래 코드와 같이 설치하고 import하면 끝난다. 당연히 런타임을 다시 시작할 필요도 없다. 물론 이 방법 또한 없어질 수도 업데이트 될 수도 아무도 알 수가 없다.
- 일단 설치
!pip install koreanize-matplotlib
- import 해서 쓰자.
import koreanize_matplotlib