[Python데이터시각화] 2. Matplotlib 기초
Matplotlib
- 2D 차트 이미지 생성 라이브러리
- 출판에도 사용할 수 있을 정도로 고품질의 이미지 생성
Sample #1 기본
from matplotlib import pyplot as plt
x = [0, 1, 2, 3]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.show()
Sample #2 JupyterNotebook에서 보기
%matplotlib inline
from matplotlib import pyplot as plt
x = [0, 1, 2, 3]
y = [1, 4, 9, 16]
plt.plot(x, y)
## plt.show() # %matplotlib inline을 썼기에 불필요
하나의 Figure에 다수의 Axes 구조
- 하나의 이미지에 여러 그래프가 포함될 수 있다.
Sample #3 Figure 크기 지정하기
%matplotlib inline
from matplotlib import pyplot as plt
x = [0, 1, 2, 3]
y = [1, 4, 9, 16]
plt.figure(figsize=(10, 5)) # 인치단위, 너무 클 경우 축값이 안보임
plt.plot(x, y)
Sample #4 꾸미기
%matplotlib inline
from matplotlib import pyplot as plt
x = [0, 1, 2, 3]
y = [1, 4, 9, 16]
plt.figure(figsize=(10, 5))
plt.plot(x, y)
plt.title('Line Chart')
plt.xlabel('X축')
plt.ylabel('Y축') # 한글이 깨져서 나옴
plt.grid()
Sample #5 한글 폰트 설정
%matplotlib inline
from matplotlib import pyplot as plt
## 이렇게 쓸수도 있고
## plt.rc('axes', unicode_minus=False)
## plt.rc('font', family='Malgun Gothic')
## 이렇게 쓸수도 있다
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.family'] = 'Malgun Gothic'
x = [0, 1, 2, 3]
y = [1, 4, 9, 16]
plt.figure(figsize=(10, 5))
plt.plot(x, y)
plt.title('Line Chart')
plt.xlabel('X축')
plt.ylabel('Y축') # 한글이 깨져서 나옴
plt.grid()
가용한 폰트 목록
import os
import pandas as pd
from matplotlib.font_manager import fontManager
font_list = []
for font in fontManager.ttflist:
font_list.append({
'name': font.name,
'file_name': os.path.basename(font.fname),
'style': font.style
})
df = pd.DataFrame(font_list).set_index('name')
print(df.shape)
df.head()
Sample #6 스타일 시트 지정
%matplotlib inline
from matplotlib import pyplot as plt
plt.style.use('seaborn-pastel')
x = [0, 1, 2, 3]
y = [1, 4, 9, 16]
plt.plot(x, y)
Sample #7 Pandas 활용
%matplotlib inline
from matplotlib import pyplot as plt
plt.rc('axes', unicode_minus=False) # '-' 이슈
plt.rc('font', family='Malgun Gothic') # 운영체제에 맞게 쓰기
x = [0, 1, 2, 3]
y = [1, 4, 9, 16]
import pandas as pd
df = pd.DataFrame(y, index=x)
ax = df.plot(title='라인 차트', figsize=(10, 5), grid=True)
## ax.set_title('라인 차트') # 또는 plt.title('라인 차트')
ax.set_xlabel('Label X') # 또는 plt.xlabel('Label X')
ax.set_ylabel('Y축')
## ax.grid() # 또는 plt.grid()