본문 바로가기
프로그래밍 및 개발/Python

파이썬 matplotlib으로 차트(pyplot) 만들 때 한글 깨짐

by typenine9 2023. 7. 30.
300x250

파이썬 차트 한글 깨짐

파이썬 코드로 차트 출력하는 예시를

 

확인하려고 코드를 정리하고 돌려봤습니다.

 

그런데 이게 왠걸.

 

차트에 한글이 깨져서 나왔습니다.

 

반응형

 

한글 깨져 나온 파이썬 차트

 

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

 

 

<