반응형
이 글은 리눅스 한글 폰트가 설치되어있다는 가정하에 진행합니다.
아래의 포스팅으로 이동하면 한글 폰트를 설치하는 절차가 기재되어있습니다.
https://luvris2.tistory.com/118
리눅스(linux) 운영체제에서 matplotlib 한글 사용하기
한글폰트 유무 확인
- fontconfig 를 이용하여 사용할 한글 폰트 확인
- 저는 나눔고딕체를 사용할 예정이며, 리눅스 폰트 폴더에 설치해둔 상태입니다.
- 터미널에서 fc-list 명령어 실행
- 설치된 한글 폰트의 이름 확인
fc-list
한글폰트 설정
- python을 입력하여 아래의 코드를 한줄한줄 쳐서 확인해봅니다.
- 파이썬의 버전과 설치 위치, 캐시 정보가 담긴 폴더의 이름을 알기 위함입니다.
- 터미널
python
- python 에디터
import matplotlib
print(matplotlib.__version__) # matplotlib 버전확인
print(matplotlib.__file__) # 설치 폴더 경로 확인
print(matplotlib.get_cachedir()) # 캐시 폴더 경로 확인
matplotlib에 한글 폰트 추가
- 위에서 확인한 자신의 설치 폴더 경로에 맞게 폰트를 복사해줍니다.
- 그 후 matplotlib의 폰트 캐시를 삭제합니다. 이는 새로 설치한 폰트를 업데이트해주는 역할을 합니다.
- 저는 폰트 폴더에 모든 파일을 복사해서 넣어주었습니다.
- 터미널
#sudo cp -r /usr/share/fonts/truetype/nanum/Nanum* 아까 확인한 설치 폴더 위치+mpl-data/fonts/ttf/
sudo cp -r /usr/share/fonts/* /home/ec2-user/anaconda3/envs/streamlit3.7/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
rm -rf /home/ec2-user/.cache/matplotlib/*
matplotlib에 한글 폰트 확인
- python을 입력하여 아래의 코드를 한줄한줄 쳐서 확인해봅니다.
- 이는 matplotlib에 추가한 한글 폰트가 정상적으로 추가되었는지 확인하기 위함입니다.
- 코드 입력시 리스트가 보인다면 성공적으로 한글 폰트가 추가된 것입니다.
- 터미널
python
- python 에디터
import matplotlib
import matplotlib.font_manager
# 폰트 전체 리스트 확인
[i.fname for i in matplotlib.font_manager.fontManager.ttflist]
# 나눔 폰트 설치 확인
[f.name for f in matplotlib.font_manager.fontManager.ttflist if 'Nanum' in f.name]
streamlit(스트림릿)의 대시보드에서 한글 폰트 사용하기
한글 폰트 설정하기
- matplotlib의 폰트를 지정해서 한글을 출력하는 작업을 진행해야합니다.
- 한글 폰트를 matplotlib의 출력 폰트로 지정해줍니다.
- 리눅스의 한글 폰트 설치는 완료하였으니 이제 한글을 matplotlib의 출력 폰트로 지정하기 위해 개발툴로 이동합니다.
IDE - 코딩 (Visual Studio Code 등)
- streamlit을 실행하는 파일에서 코딩을 진행합니다.
- 아래의 코드를 소스 파일 최상단에 배치하여 설치한 글씨체의 이름을 입력해주세요.
- 'family' 의 값을 위에서 설치한 폰트의 이름으로 입력
- 설명 : 운영체제가 리눅스 일 경우, matplotlib의 폰트를 나눔고딕으로 변경
- 'family' 의 값을 위에서 설치한 폰트의 이름으로 입력
# Streamlit File *.py
import platform
from matplotlib import font_manager, rc
plt.rcParams['axes.unicode_minus'] = False
if platform.system() == 'Linux':
rc('font', family='NanumGothic')
확인
- streamlit 서버에서 정상적으로 한글이 출력되는 모습 확인
반응형