(2024.11.24) 수정됨.
문제 상황

mplfinance를 통해 차트를 그릴 때, label이 한글로 되어있다면 이미지와 같이 문자가 깨진다.
해결방법
한글 문자가 지원되지 않는 폰트를 사용하고 있는 것이 문제이기 때문에, 한글이 지원되는 폰트를 적용한다.
설명
이것은 mplfinance의 문제가 아닌 matplotlib의 고질적인 문제다.
영어권 사용자가 만든 것이라면 그러하듯 타 언어권에서 사용할 경우 발생하는 문제(특히 한글과 같은 유니코드 문자)를 예상할 수 없기 때문이다.
인터넷을 찾아보면 다음과 같이 matplotlib의 설정을 가져와 문제 해결이 가능하다고 하기도 하지만, 문제의 원인이 바뀐 것인지 다음과 같이 인터넷에 퍼져있는 해결방법으로는 문제가 해결되지 않았다.
import matplotlib.pyplot as plt
plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 나눔글꼴 경로 설정
font_path = 'C:/Windows/Fonts/NanumGothic.ttf'
# 폰트 이름 가져오기
font_name = fm.FontProperties(fname=font_path).get_name()
# 폰트 설정
plt.rc('font', family=font_name)
그 이유는 아마도 최종적으로 적용되는 것이 mplfinance에 전달하는 style object때문인 것으로 생각되는데, 이 점을 유의하고 있다면 문제 해결은 간단했다.
설명
임의로 설정한 style을 사용하고 있는 경우
mpf.plot(style=style)로 전달하는 style variable의 rc value에 font.family 설정을 추가해주면 문제가 해결된다.
style['rc']['font.family'] = 'Malgun Gothic'
기본 style을 사용하는 경우
기존에 사용하던 스타일을 베이스로 하는 임의 스타일 variable을 생성한 다음, rc value에 font.family 설정을 추가한 것을 적용하면 문제가 해결된다.
import mplfinance as mpf
# 스타일 생성
style = mpf.make_mpf_style(base_mpl_style='yahoo', rc={'font.family': 'Malgun Gothic'})
# 차트 그리기
mpf.plot(
...,
# sytle='yahoo', # 기존에 사용하던 기본 스타일 제거
style=style, # 생성한 스타일 적용
)
