본문 바로가기

오늘의 오류들/ubuntu

4.우분투에서 matplotlib 폰트 한글 적용 및 폰트 사이즈 조절하기

환경: ubuntu20.04 lts

 

아나콘다에서 matplotlib의 한글폰트가 깨져서 나온다. 폰트가 없어서 나오는 오류라고 한다.

1) 우선 폰트를 다운 받기전에 업데이트를 해줍니다.

2) 그리고  '나눔'폰트를 설치해줍니다.

$ sudo apt-get update
$ sudo apt-get install fonts-nanum* 

3) 다운로드 후에 캐쉬를 삭제해줍니다.

$ sudo fc-cache -fv

 

[/usr/share/fonts 에 있는 nanum글씨체들]

 

[2.아나콘다 font에 matplotlib에 나눔글씨체 복사  추가]

 

$ sudo cp /usr/share/fonts/truetype/nanum/Nanum* /home/hy1/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/

$ rm -rf /home/hy1/.cache/matplotlib/

*여기선 제 anaconda가 설치되어있는 경로로 카피를 했습니다. 그래서 각자 아나콘다가 설치되어있는 경로로 home/hy1/anaconda3 이부분을 바꿔주시면 됩니다.

 

*그리고 나서 matplotlib의 캐쉬를 삭제해줍니다.

ls -l 로 nanum글씨체가 설치된 것을 확인 할 수 있다.

 

 

 

 

[3.matplotlib에 nanum 폰트 리스트 확인]

그런 후에 쥬피터 노트북을 켜서 나눔폰트 리스트를 출력해봅니다.

 

import matplotlib
import matplotlib.font_manager


[(f.name, f.fname) for f in fm.fontManager.ttflist if 'Nanum' in f.name]

여러 나눔 폰트들이 있는 것을 확인할 수 있습니다.

 

 

여기에서 적용할 수 있는 방법이 3가지 가 있습니다. 전역으로 적용시키는방법 2가지와 

FontProperties 속성으로 폰트 속성을 지정하는 방법 1가지가 있습니다.

 

우선 전역으로 글꼴이나 폰트를 설정해두고, 바꿔야 할 설정이 있다면 fontProperties 속성으로로 적용시키는 방법이 쓰기 편한 것 같습니다. 

 

저는 킬때마다 쥬피터 노트북에 한글이 계속 적용되었으면 해서 matplotlibrc 파일을  직접 수정 하는 방법을 첫번째 방법으로 적었습니다. (*matplotlibrc 파일이란 matplotlib의 설정파일 이라고 생각하시면 됩니다.)

 

*matplotlibrc로 수정하는 방법말고 다른 방법으로 설정하기 원하신다면 4-2로 바로 가시면 됩니다.

 

[전역으로 font설정 적용하기]

* 4-1,4-2 중 편하신 방법으로 진행하시면 됩니다.

 

[4-1. matplotlibrc 파일 수정하기]

~/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data

 

위 경로처럼 matplotlibrc는 mpl-data안에 있습니다.

 

 

$ sudo vim matplolibrc

이제 vim으로 파일을 설정하면됩니다.(vim말고 다른 에디터도 괜찮습니다~)

 

 

여기서 font.family에 nanum font 리스트 중 아무것이나 입력하고 적용하면 됩니다.

 

matplotrc 파일을 저장해주고  아나콘다를 재실행 해주면 나눔폰트가 잘 적용된 것을 볼 수 있다.

 

그런데 폰트 크기와 x축  y축 글씨가 너무 작은거 같아 추가적으로  vim으로 한번 더 수정을 해봤습니다.

$ sudo vim matplolibrc
font.size           : 17
xtick.labelsize     : 20
ytick.labelsize     : 20
axes.labelsize      : 20
axes.titlesize      : 25

*사이즈는 원하시는대로 조절하시면 됩니다.

 

적용 결과 글자가 잘 커졌습니다.

 

 

[4-2. matplotlib.rcParams로 수정하기]

이 상태에서 rcParams로 설정하게 되면

import matplotlib.pyplot as plt

plt.rcParams["font.family"] = 'NanumGothic'

#폰트 설정

plt.rcParams['font.size'] = 12.
# 폰트 사이즈

plt.rcParams['xtick.labelsize'] = 24.
# x축 라벨사이즈

plt.rcParams['ytick.labelsize'] = 24.
# y축 라벨사이즈

plt.rcParams['axes.labelsize'] = 20.
#그래프 축 폰트사이즈

[rc.params으로 폰트 설정결과]

해당파일을 끄기 전까진 rcParams로 설정 이후 따로 설정하지 않아도 해당파일을 종료하기 전까지 해당파일은 계속 폰트 설정이 유지가 됩니다.

 

하지만 아나콘다가 종료되고 해당 파일은 다시 설정해줘야 폰트가 적용됩니다. 

그리고 다른 노트북 파일에는  현재 노트북 파일에 적용되었다고 해서 적용되지 않습니다.

[참고사이트]

https://programmers.co.kr/learn/courses/21/lessons/950

 

실습으로 배우는 데이터 사이언스 - Matplotlib에서 한글 폰트 사용하기

Matplotlib 한글폰트 사용하기 1. 필요한 패키지를 가져옵니다. # 그래프를 노트북 안에 그리기 위해 설정 %matplotlib inline # 필요한 패키지와 라이브러리를 가져옴 import matplotlib as mpl import matplotlib.pypl

programmers.co.kr

https://financedata.github.io/posts/matplotlib-hangul-for-ubuntu-linux.html

 

matplotlib + 한글 (Ubuntu Linux)

matplotlib 에서 한글 (Ubuntu Linux)

financedata.github.io

* axes 라벨 폰트사이즈 조절

https://stackoverflow.com/questions/12444716/how-do-i-set-the-figure-title-and-axes-labels-font-size-in-matplotlib

 

How do I set the figure title and axes labels font size in Matplotlib?

I am creating a figure in Matplotlib like this: from matplotlib import pyplot as plt fig = plt.figure() plt.plot(data) fig.suptitle('test title') plt.xlabel('xlabel') plt.ylabel('ylabel') fig.sav...

stackoverflow.com

* axes 라벨 폰트사이즈 조절

https://bjy2.tistory.com/82

 

[Python] matplotlib - plot 폰트 크기 변경

import matplotlib.pyplot as plt SMALL_SIZE = 8 MEDIUM_SIZE = 10 BIGGER_SIZE = 12 plt.rc('font', size=SMALL_SIZE) # controls default text sizes plt.rc('axes', titlesize=SMALL_SIZE) # fontsize of the..

bjy2.tistory.com

https://dfrieds.com/data-visualizations/style-plots-python-matplotlib.html

 

Style Plots using Matplotlib

Customize any type of plot's styles in Python using the Matplotlib library to change the title, label axes and change colors

dfrieds.com