matplotlib 한글 깨짐(Python)

참조 링크

문제 : matplotlib 로 그래프를 그릴 때, 라벨이나 그래프의 제목에 한글을 쓸 경우, 깨지는 현상이 일어남

1. 각 그래프 메소드(함수)에 fontproperties에 직접 어떤 폰트를 쓸 것인지 매번 지정해주는 방법 
-> plt.pie는 fontproperties로 할 경우 동작을 하지 않았다. 
하지만 xlabel, ylabel의 경우 인자를 fontproperties로 설정하였더니, 
그 부분은 한글이 깨지지 않는 것을 확인하였다.
-> 단점 : plt.pie에서 fontproperties를 인자로 주어 출력하면 pie에는 keyword에 대해서 동작이 안된다는 에러가 뜬다.
font_path = r'NanumBarunGothicLight.ttf'
fontprop = fm.FontProperties(fname=font_path, size=18)

graph = theme_cnt  # {'수소차': 124, '2차전지': 129, '메타버스': 531}
ratio = y_temp

labels = x_temp

plt.ylabel('가격', fontproperties=fontprop)
plt.xlabel('시간(분)', fontproperties=fontprop)

plt.pie(ratio, labels=labels, autopct='%.1f%%', textprops=fontprop  )#, fontproperites= fontprop)
plt.show()
2.  rcParams로 전역글꼴로 설정함(위의 링크에서 제안한 방법은 이것과 다름. 참고하면 좋을 듯)
- 새로 폰트 설치하거나 저장할 필요 없이 이부분만 추가하면 한글이 깨지지 않고 나옴
	- rc('font', family='AppleGothic') 로 애플에서 제공하는 기본 폰트로 설정

TODO : 새로운 폰트로 설정

  • 일단은 맥에서 폰트 불러오는 디렉토리 찾아서 ttf 파일 넣어주고, 폰트 이름 찾아서 설정해주면 될 듯함(아래 코드 예시)
path = '/Library/Fonts/NanumBarunGothic.ttf'
font_name = fm.FontProperties(fname=path, size=50).get_name()
plt.rc('font', family=font_name)
  • get_name으로 폰트 이름 찾아서 plt.rc 로 폰트 설정하기. ttf 파일 이름과 별개이기 때문에 확인 꼭 필요하다(ex: 파일명이 NanumBarunGothicLight.ttf이지만 get_name으로 이름을 확인하면 NanumBarunGothic으로 확인된다.).

좋은 웹페이지 즐겨찾기