본문 바로가기

데이터분석/데이터시각화

matplotlib 한글폰트 설정하기

python 으로 데이터 시각화할때 많이들 쓰시는 matplotlib 에서

한글이 깨지는데요. 이에 대해 설정을 해줘야 할 필요가 있습니다. 

오늘은 이에 대해 다뤄 보겠습니다. 

 

이 설정은 유튜브  'todaycode오늘코드' 를 참고 했구요. 

맨 아래 링크를 첨부 했습니다 :) 

 

필요한 라이브러리를 부르고 임의의 숫자들로 데이터를 구성해보겠습니다 :) 

이 상태에서 시각화를 한 번 해볼게요. 

 

한글이 깨지네요... 

근데 그전에 저 그래프 창 보려고 하는데 뭔놈의 경고창 같은게 굉장히 많이 뜨네요. 

제가 알기로는 라이브러리나 파이썬 버전 문제같은 거에 대한 경고? 같습니다. 위 캡쳐에는 별로 없지만, 

사실 제 주피터에서는 마우스 스크롤 바퀴를 3바퀴정도 돌려야 위 그래프가 보였습니다. 

 

저러한 거 안 보이게 해주는  warning 라이브러리를 사용하겠습니다.

 

1) 보기 싫은 경고창 삭제해주는 warnings 라이브러리 

 

warnings 코드를 기계처럼 라이브러리 임포트 할 때 하시는 분도 있고 안하시는 분도 있습니다. 

공부하다가 다른 코드 참고할때 꼭 저게 되어있는데 뭔가 없어도 될 것 같아서 warnings 라이브러리는 복붙

안하시는 분들이 종종 있더라구요 (저처럼...ㅎㅎ) 

 

하지만, 의미를 알고나서는 저도 항상 저 'warnings' 라이브러리를 꼭 합니다. 

에러를 안 보이게 하는 것이 아닌, 경고만을 안 보이게 해주는 고마운 라이브러리 입니다 :) 

 

이제, matplotlib 경로랑 캐시 위치를 확인해보겠습니다. 

이 작업은 윈도우에서 하시는 분들이라면 굳이 할 필요 없을...것 같습니다만...

In[12] 부분에 컴프리헨션으로 나눔폰트 경로 위치 보는거는 해주시기 바랍니다. 

3가지 방법 중 하나에 적용하려면 경로를 알아야하거든요!

 

나눔 폰트 여부를 아래 코드에서 확인할 수 있습니다. 

만약, 폰트가 설치되어 있지 않다면 별도로 해주시지 바랍니다. 

(경로 확인 해주시구요) 

 

2)  폰트를 사용하는 방법은 3가지가 있습니다.

1) FontProperties 를 사용하는 방법 - 그래프의 폰트가 필요한 항목마다 지정해 주어야 합니다.

 

나눔고딕볼드 체를 써보겠습니다. 위 화면에 표시된 경로를 그대로 복사해주세요. 

 

방법1 - FontProperties 사용

 

경로를 변수로 설정하고 이를 FontProperties 를 통해서 인스턴스화 해줍니다. 

그 다음 그 인스턴스를 부분부분 넣어주면 됩니다 :) 

 

방법2 - matplotlib.rcParams[]으로 전역글꼴 설정 방법

 

matplotlib의 기본 폰트는 serif  라는 폰트인데 위키백과나 구글에 치시면 유래가 있는 폰트로 보입니다. 

다만, 한글을 지원해주는 폰트가 아니기에 matplotlib 에서는 깨지는 것 같습니다. 물론, 구글에서 serif 한글 폰트 무료로 쓸 수 있게 배포했다고 하지만, 어쨌든 현재 제 주피터 노트북 안의 matplotlib 의 디폴트 폰트에는 한글을 지원해주지 않는다는 사실이 중요합니다. 

 

아까 전 방법에서 '나눔'폰트 확인했던거 기억하시죠? 

거기에 나온 폰트 중 하나를 plt.rcParams 에 넣어주세요. (위 코드 참고) 

그러면 첫 번째 방법과는 다르게 FontProperties 를 일일히 설정 안해줘도 됩니다 :) 

 

하지만, 어떤 대회를 나간다거나 그래프 이쁘게 만들거나 할 때는 전역설정 말고 그 때 그때 필요한 폰트를 일일히 설정해주는게 낫겠죠? 

 

rcParams 대신 다른 방법으로도 전역 설정을 할 수 있습니다. 

위 코드 참고해주시길 :) 

 

방법3 -  위에서 했던 2)번의 방법을 mpl.matplotlib_fname()로 읽어지는 설정 파일에 직접 적어주는 방법

단 모든 노트북에 적용됩니다. 노트북을 열 때마다 지정해 주지 않아도 돼서 편리합니다.

 

이번 방법은 조금 까다로울 수 있습니다. 

먼저, 저의 경우는 리눅스를 쓰고 있어서 그거를 기준으로 진행하구요. 출처에 나온 동영상에서는 

조은님께서 맥에서 이 세팅을 합니다. 문제는 '터미널'을 통해서 작업한다는 건데요. 

 

만약, 지금 이 포스팅을 보시는 분이 윈도우만을 계속 사용해왔거나, '터미널'에 익숙치 않는다면 이 방법이 

조금 어렵게 느껴질 수 있습니다. 

 

제가 윈도우 노트북을 코딩용으로 별도로 쓸 수 있는게 없어서 윈도우라는 디폴트 설정 바꾸는 이 방법을 보여줄 수가 없습니다...

하지만 윈도우에서는 window+R 을 눌러서 CMD 를 입력하시면 터미널이 나옵니다. 

 

$ vi 설정파일 위치 

를 입력해서 아래한 거처럼 따라하면 되지 않을까 싶은데... 

정확히는 모르겠네요. 나중에 윈도우용 노트북을 구입할 생각인데 그 때, 따로 작업하면 시도해보겠습니다 :) 

 

우선 matplotlib font 부분의 경로를 위 코드를 통해서 확인합니다. 

 

이를 터미널에서 vi 또는 vim 으로 열어주시구요. 

 

열면 위와 같이 나옵니다. 

 

해당 폰트를 디폴트로 해놓는 경로를 찾습니다. 

아까 위에서 Sans-serif 로 디폴트가 되어있는 것을 확인했습니다. 

# 은 주석처리이므로 그 위에 새로 나눔폰트를 적용한 뒤에 

저장 후 종료 라는 명령어를 아래 와 같이 입력합니다. 

:wq 

 

그리고 새 주피터 노트북을 열어서 

한글 폰트가 적용됐는지 확인해보겠습니다.

제대로 적용된 것을 확인할 수 있습니다. 

 

일단, 제일 좋은 것을 디폴트로 한글 폰트가 적용되는 것을 설정하시는 거지만 '터미널'을 통해서 하는 작업이기에 

익숙치 않다면 기존의 1번이나 2번 방법으로 라이브러리 임포트 하는 것처럼 매번 설정해주시는 것이 좋을 것 같습니다. 

 

이상 오늘 포스팅을 마치겠습니다. 

 

위 실습 파일은 깃허브에 올려놓겠습니다. 

매번, 실습한 것을 캡쳐만 해서 올려서,  따라하시려는 분들이 불편하실 것 같다라는 생각이 들었는데요. 

캡쳐라서 마우스로 복붙도 안될 거에요 ㅠㅠ 

 

이제부터라도 제가 했던 코드들을 깃을 통해서 첨부하도록 노력하겠습니다 :) 

 

https://github.com/JangDaehyuk/basic_data_analysis_tip

 

아래 출처는 제가 참고한 영상입니다. 

조은님의 강의와 꿀팁들은 데분을 하시는 분들에게 많은 도움이 되니 공부하는데

유용하게 쓰시면 좋을 것 같습니다 :) 

 

 

----------------------출처------------------------------

https://www.youtube.com/watch?v=S5N3LjhkcDs

https://github.com/corazzon/TIL/blob/master/notebook/matplotlib_font_setting.ipynb