python의 데이터 시각화 라이브러리는 굉장히 여러개이다.
그 중에서 가장 많이 쓰는 대표적인 몇개를 소개할까 한다.
package를 우선 import해준다.
import matplotlib.pyplot as plt
%matplotlib inline
그래프를 본격적으로 그리기 전에, 자리를 미리 깔아놔야한다.
# 자리깔기
fig = plt.figure() #그래프를 그리기 위한 figure객체 생성
ax1 = fig.add_subplot(1,1,1) # 1행 1열 중 1번째 자리
또는 그래프 크기를 정해줄수도 있다.
fig = plt.figure(figsize=(5,2))
ax1 = fig.add_subplot(1,1,1)
그래프를 여러개 만들려면 add_subplot
을 이용해 추가하면 된다.
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1) # 2행 2열 중 첫번째
ax2 = fig.add_subplot(2,2,2) # 2행 2열 중 두번째
ax3 = fig.add_subplot(2,2,4) # 2행 2열 중 4번째
bar()
를 이용해서 막대 그래프를 그려준다.
[코드]
subject = ['English', 'Math', 'Korean', 'Science', 'Art']
points = [40, 90, 50, 60, 100]
# 축 그리기
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
# 막대 그래프 그리기
ax1.bar(subject,points)
[결과]
label
과 title
을 추가할 수도 있다.
plt.xlabel('Subject')
plt.ylabel('Points')
plt.title("Result")
label
title
을 추가해서 막대그래프를 다시 그려보자.
#그래프 데이터
subject = ['English', 'Math', 'Korean', 'Science', 'Art']
points = [40, 90, 50, 60, 100]
# 축 그리기
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
# 라벨, 타이틀 달기
plt.xlabel('Subject')
plt.ylabel('Points')
plt.title("Result")
# 그래프 그리기
ax1.bar(subject, points)
line
을 대표적으로 사용하는 분야는 아마 주식에서 주가 데이터를 나타낼때가 아닐까 싶다.
matplotlib로 주석(annotation)
을 달수도 있고, 좌표축(xlim, ylim)
을 설정해 줄 수도 있다.
추가로 그래프 배경을 grid
모양으로 바꿀 수도 있다.
plt.plot()
을 사용하면 위에서 figure()
와 add_subplot()
과정을 생략하고 바로 그래프를 그릴 수 있다.
import numpy as np
x = np.linspace(0, 10, 100) #0~10까지 균등한 간격으로 100개 숫자만들기.
plt.plot(x, np.sin(x),'o')
plt.plot(x, np.cos(x),'*-', color='black')
plt.show()
subplot
을 이용해서 여러개를 그릴 수도 있다.
x = np.linspace(0, 10, 100)
plt.subplot(2,1,1)
plt.plot(x, np.sin(x),'orange','o')
plt.subplot(2,1,2)
plt.plot(x, np.cos(x), 'orange')
plt.show()
x, y데이터는 물론 선 색깔, 마커옵션 등을 바꿀 수도 있다.
x = np.linspace(0, 10, 100)
plt.plot(x, x + 0, linestyle='solid')
plt.plot(x, x + 1, linestyle='dashed')
plt.plot(x, x + 2, linestyle='dashdot')
plt.plot(x, x + 3, linestyle='dotted')
plt.plot(x, x + 0, '-g') # solid green
plt.plot(x, x + 1, '--c') # dashed cyan
plt.plot(x, x + 2, '-.k') # dashdot black
plt.plot(x, x + 3, ':r'); # dotted red
plt.plot(x, x + 4, linestyle='-') # solid
plt.plot(x, x + 5, linestyle='--') # dashed
plt.plot(x, x + 6, linestyle='-.') # dashdot
plt.plot(x, x + 7, linestyle=':'); # dotted
pandas도 시각화를 할 수 있게 지원해주고 있다.
plot()
메소드를 사용하면 가능하다.
[예제 코드]
# Series타입의 임의의 데이터 생성
data = pd.Series(np.random.rand(5), index=list('abcde'))
fig, axes = plt.subplots(2, 1)
data.plot(kind='bar', ax=axes[0], color='blue', alpha=1)
data.plot(kind='barh', ax=axes[1], color='red', alpha=0.3)
kind
에 쓰고 싶은 그래프 이름을 넣어주면 된다.
[예제코드]
df = pd.DataFrame(np.random.rand(6,4), columns=pd.Index(['A','B','C','D']))
df.plot(kind='line') # line plot
더 자세하게 알고 싶다면 여기를 클릭하면 된다.
그래프를 시각화 하는 방법을 정리하면 다음과 같다.
1. fig=plt.figure()
: figure객체를 할당하여 판을 깔아준다.
2. ax = fig.add_subplot(1,1,1)
: 축을 그린다.
3. ax.bar(x, y)
: 축안에 어떤 그래프를 그릴지 메소드를 선택한 후, 데이터를 x y 각각에 넣어준다.
4. grid
, xlabel
, ylabel
, title
... parameter들은 원하는 대로 추가해준다.
plt.savefig
: 그래프를 저장해주는 메소드이다.밑에는 그래프의 각 명칭을 나타낸 그림이다.