matplotlib 사용 시 주요 불편 사항을 정리했습니다.
1. 그래프가 잘 안보일 때
jupyterthemes 을 설치해서 주피터 노트북 테마를 다크 계열로 사용하시는 분들이 계실텐데요.
다 좋은데 그래프의 x축과 y축 단위가 안보여서 짜증나셨던 분들이 계실 것 같아요.
%matplotlib inline
import pandas as pd
df = pd.read_csv('/Users/leitmotiv/csvdata/broadcast.csv', index_col=0)
df.plot()
이렇게 방송국 시청률 데이터를 선 그래프로 불러왔더니 x축 y축 내용이 잘 안보이게 되죠.
이럴 경우 여러가지 해결 방법이 있겠지만,
저는 주로 아래처럼 코드를 사용합니다.
import matplotlib.pyplot as plt
fig, ax = plt.subplots(nrows = 1, ncols = 1, figsize = (20, 10)) # 그래프 틀 생성
fig.patch.set_facecolor('xkcd:white') # 그래프 흰색 배경 확장하기
코드를 실행하면 이렇게 큼지막한 그래프 틀이 도화지처럼 하나 생성되는데요.
내용은 없지만 보이지 않던 x축과 y축 숫자가 보이기 시작했습니다.
추가로 nrows와 ncols값을 바꿔 필요한 만큼 여러 개의 그래프 틀을 생성할 수도 있습니다.
이때 각 그래프에 데이터를 적용하기 위해서는 아래처럼 위치를 지정해 주시면 됩니다.
df1.plot(ax=ax[0,0] # left, up
df2.plot(ax=ax[0,1] # right, up
df3.plot(ax=ax[1,0] # left, down
df4.plot(ax=ax[1,1] # right, down
지금은 도화지 하나만 설정해서 시청률 데이터를 적용해보겠습니다.
df.plot(ax=ax, fontsize=30, xlabel='연도', ylabel='비율', title="시청률")
조그마했던 x,y축 수치가 이제 잘 보이죠?
그런데 x축 이름과 y축 이름 크기는 fontsize가 적용되지 않았네요.
게다가 한글을 사용했더니 깨짐 현상이 나타났습니다.
이 경우는 아래와 같이 해결할 수 있습니다.
2. 글자가 깨져서 보일 때
from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname='/System/Library/Fonts/Supplemental/AppleGothic.ttf').get_name()
rc('font', family=font_name, size=20)
font_manager의 fname 에서 적용시킬 폰트 디렉토리를 설정해 주었습니다.
저는 맥 유저라서 애플고딕 폰트를 적용했는데요.
윈도우 기반 사용자는 윈도우에 맞게 폰트 디렉토리를 설정해주시면 됩니다.
코드를 실행 후 이전에 작성한 코드를 다시 실행시켜보면
x축과 y축 이름, 제목, 그리고 legend(범례)까지 폰트 크기가 20으로 적용되었고, 한글도 잘 출력됩니다.
여기서 plot 옵션에서 설정한 폰트 크기는 x축, y축 범위에만 적용되고,
rc 옵션에서 설정한 폰트 크기는 그외 요소에 따로 적용되고 있다는 점 기억해 두세요.
3. 마이너스 기호가 깨져서 보일 때
matplotlib.rcParams['axes.unicode_minus'] = False
추가적으로 x, y축 값이 마이너스값이 있어서 마이너스(-) 기호가 깨져서 보일 때는
이 코드를 덧붙여 주시면 됩니다.
4. 정리
데이터 시각화를 하실 때는 항상 아래 코드를 복사해두었다가 사용하시는 걸 추천드립니다.
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
matplotlib.rcParams['axes.unicode_minus'] = False
font_name = font_manager.FontProperties(fname='/System/Library/Fonts/Supplemental/AppleGothic.ttf').get_name()
rc('font', family=font_name, size=20)
fig, ax = plt.subplots(nrows = 1, ncols = 1, figsize = (20, 10)) # 그래프 틀 생성
fig.patch.set_facecolor('xkcd:white') # 그래프 흰색 배경 확장하기
'파이썬 코딩 한줄' 카테고리의 다른 글
[pandas apply] 텍스트를 일정 길이만큼 잘라서 분리하기 (0) | 2022.10.14 |
---|---|
아직도 셀레니움(Selenium)에서 벗어나지 못했다면... (0) | 2022.10.10 |
파이썬 groupby로 요소 모아 보기 (단순 집계 이상으로 활용하기) (0) | 2022.09.21 |
이미지 URL에서 이미지 파일 다운받기 (0) | 2022.09.16 |
파이썬 print와 return의 차이가 헷깔리는 이유는? (0) | 2022.02.26 |