[Python데이터시각화] 2. Matplotlib 기초

Matplotlib

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()