개발은 처음이라 개발새발

matplotlib 한글 폰트 오류 해결 본문

파이썬/판다스

matplotlib 한글 폰트 오류 해결

leon_choi 2022. 7. 1. 09:00
반응형
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('./시도별 전출입 인구수.xlsx', header=0)

#빈칸 채워주기
df = df.fillna(method='ffill')

#서울에서 다른 지역으로 이동하는 인구수
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')

df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1) #불필요한 전출지별 제게
df_seoul.rename({'전입지별':'전입지'}, axis=1, inplace=True) #컬럼명 변경
df_seoul.set_index('전입지', inplace=True) #인덱스 설정

print(df_seoul)

#서울에서 경기도로 이동안 인구수만 추출
sr_one = df_seoul.loc['경기도']

plt.plot(sr_one.index, sr_one.values) #x축, y축
plt.show()

matplotlib로 데이터프레임 그래프 그리기 1편 - https://data-so-hard.tistory.com/21

네 지난 시간에는 matplotlib를 활용해 기본적인 모습의 그래프를 그려봤는데요. 이번 시간에는 이 그래프를 한번 꾸며보도록하겠습니다. 우선 x축과 y축에 이름을 넣어보는 게 좋을 거 같습니다. x축은 연도를 나타내고 있으니 연도를, y축은 인구수를 표현하고 있으니 인구수라고 적어보도록하겠습니다. 각각의 축에 이름을 적을 때는 plt.xlabel('이름'), plt.ylabel('이름') 을 사용합니다. 그리고 마지막으로 제목을 붙여 보겠습니다. 제목은 plt.title('이름') 코드로 적용할 수 있습니다. 코드를 이어서 적어보겠습니다. 

 

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('./시도별 전출입 인구수.xlsx', header=0)

df = df.fillna(method='ffill')

#print(df)


#서울에서 다른 지역으로 이동하는 인구수

mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')

df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1) #불필요한 전출지별 제게
df_seoul.rename({'전입지별':'전입지'}, axis=1, inplace=True) #컬럼명 변경
df_seoul.set_index('전입지', inplace=True) #인덱스 설정

print(df_seoul)

#t서울에서 경기도로 이동안 인구수만 추출
sr_one = df_seoul.loc['경기도']

plt.plot(sr_one.index, sr_one.values) #x축, y축
plt.title('서울에서 경기도 인구 이동')
plt.xlabel('연도')
plt.ylabel('이동 인구수')

plt.show()

이렇게 코드를 적어 실행해봤더니 한글이 오류가 생겨 표출됐습니다. 이런 상황이 발생한 이유는 matplotlib가 한글 폰트를 지원하지 않아 생긴 것인데요. 이를 해결하기 위해서는 한글 폰트를 지정하는 코드를 적어야 합니다. 그렇다면 한글 폰트를 지정하는 코드를 다시 적고 실행해보겠습니다. 

 

import pandas as pd
import matplotlib.pyplot as plt

#한글 처리
from matplotlib import font_manager, rc
font_path = "c:/windows/Fonts/malgun.ttf" #한글 폰트 경로
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family = font_name)

df = pd.read_excel('./시도별 전출입 인구수.xlsx', header=0)

df = df.fillna(method='ffill')

#서울에서 다른 지역으로 이동하는 인구수
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')

df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1) #불필요한 전출지별 제게
df_seoul.rename({'전입지별':'전입지'}, axis=1, inplace=True) #컬럼명 변경
df_seoul.set_index('전입지', inplace=True) #인덱스 설정

print(df_seoul)

#t서울에서 경기도로 이동안 인구수만 추출
sr_one = df_seoul.loc['경기도']

plt.plot(sr_one.index, sr_one.values) #x축, y축
plt.title('서울에서 경기도 인구 이동')
plt.xlabel('연도')
plt.ylabel('이동 인구수')

plt.show()

이렇게 한글 폰트 오류를 해결했습니다. 다음 시간에는 matplotlib가 지원하는 다양한 스타일과 축과 관련해 할 수 있는 꾸미기들에 대해 소개해보도록하겠습니다. 

반응형