파이썬 차트 한글 깨짐
파이썬 코드로 차트 출력하는 예시를
확인하려고 코드를 정리하고 돌려봤습니다.
그런데 이게 왠걸.
차트에 한글이 깨져서 나왔습니다.
import pandas as pd
import matplotlib.pyplot as plt
# 가상의 주식 가격 데이터 생성
data = {'날짜': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06', '2023-01-07'],
'가격': [100, 105, 98, 110, 115, 108, 120]}
df = pd.DataFrame(data)
# 이동평균선 계산
window = 3 # 이동평균선의 기간
df['이동평균선'] = df['가격'].rolling(window=window).mean()
# 차트 그리기
plt.plot(df['날짜'], df['가격'], label='주식 가격')
plt.plot(df['날짜'], df['이동평균선'], label=f'{window}일 이동평균선')
# 차트 스타일 설정
plt.xlabel('날짜')
plt.ylabel('가격')
plt.title('주식 가격과 이동평균선')
plt.legend()
# 차트 출력
plt.show()
숫자는 잘 나오는데 한글만 깨진걸 보면
한글 가져오는 데서 문제가 있다는 걸
단번에 알 수 있었습니다.
원인을 여러방면을 찾아보면서 한글 폰트 가져오는 데서
문제가 있음을 알 수 있었습니다.
그래서 코드를 다음과 같이
수정하였습니다.
import pandas as pd
import matplotlib.pyplot as plt
# 한글 폰트 사용을 위해서 세팅
from matplotlib import font_manager, rc
font_path = "C:/Windows/Fonts/KoPubBatangBold.TTF"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
# 가상의 주식 가격 데이터 생성
data = {'날짜': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06', '2023-01-07'],
'가격': [100, 105, 98, 110, 115, 108, 120]}
df = pd.DataFrame(data)
# 이동평균선 계산
window = 3 # 이동평균선의 기간
df['이동평균선'] = df['가격'].rolling(window=window).mean()
# 차트 그리기
plt.plot(df['날짜'], df['가격'], label='주식 가격')
plt.plot(df['날짜'], df['이동평균선'], label=f'{window}일 이동평균선')
# 차트 스타일 설정
plt.xlabel('날짜')
plt.ylabel('가격')
plt.title('주식 가격과 이동평균선')
plt.legend()
# 차트 출력
plt.show()
기존 코드와의 차이점은
코드 상단 부분에
#한글 폰트를 사용하기 위해서 세팅
이라는 주석과 함께 아래 4줄의 코드가
추가되었습니다.
이는
로컬에 있는 폰트 경로를 직접 지정하여
matplotlib에 추가하겠다는 뜻입니다.
참고로 폰트 경로는
C:/Window/Fonts 입니다.
여기서 한글 폰트를 추가하면 되는데
들어가보면 폰트명이 한글로 대부분 되어 있을 겁니다.
하지만 코드에는 영문 폰트를 작성해야합니다.
위의 사진에 HY나무B 보통 폰트를 추가하려 하는데
코드를
font_path = "C:/Windows/Fonts/HY나무B보통.TTF"
이렇게 작성하면 안 됩니다.
이 폰트의 영문명을 작성해야 하는데
영문명은 폰트에 우측 마우스 - 속성으로 들어가
상단에 보이는 영문명을 작성하면 됩니다.
font_path = "C:/Windows/Fonts/HYNAMB.TTF"
이렇게 작성하면 됩니다.
폰트 수정 후 다시 돌리면
한글 폰트에 맞게 한글 출력이 되는 것을 볼 수 있습니다.
https://typenine9.tistory.com/85
[python] 파이썬 배치파일 만들기 (pyintaller 활용하여 exe파일 배포)
파이썬 코드로 작성할 걸 공유해야하는 경우가 생겼다. 특정 서버에 설치된 DB에 데이터를 insert 작업하는 코드였는데 코드 자체를 보내기 보다 배치파일로 만들어 실행하게 하면 편하지 않을까
typenine9.tistory.com
https://typenine9.tistory.com/75
[python] 엑셀 파일 열기 오류 - SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 9 -10:
엑셀 파일 열기 오류 - SyntaxError 'unicodeescape' 파이썬으로 엑셀 파일 읽어내는 예제 코드를 실행할 때 였다. 코드를 작성하고 실행해보니 이런 오류가 떠 있었다. SyntaxError: (unicode error) 'unicodeescape'
typenine9.tistory.com
https://typenine9.tistory.com/65
파이참(PyCharm) 인터프리터 오류 (please select a valid python interpreter)
파이참을 설치하고 간단한 코드를 실행하려고 코드 작성하고 RUN 하려는 중에 이런 오류를 보았다. 'Please select a vaild Python interpreter' 처음 보는 오류라 당황했다. 몇 초간 당황하다가 오류를 찾아
typenine9.tistory.com
https://typenine9.tistory.com/51
[python] Plotly로 데이터 시각화 만들기
Plotly로 데이터 시각화 만들기 오늘날의 데이터 중심 세상에서 데이터를 시각화하는 능력은 점점 더 중요해지고 있다. 대화형 데이터 시각화를 만드는 것은 모든 데이터 분석가 또는 데이터 과
typenine9.tistory.com
https://typenine9.tistory.com/49
[python] 데이터 과학 및 분석을 위한 10가지 필수 Python 라이브러리
Python의 활용도가 나날이 강력해짐을 실감하는 요즘이다. 대학생 때 Java로 간단한 프로그램 실습을 하는데도 코드 수가 길고, 구현하기가 복잡한 편이었는데 파이썬은 이와 다른 느낌이었다. 굉
typenine9.tistory.com