본문 바로가기
Study (Data Science)/ML

Matplotlib

by 콜라찡 2022. 12. 2.

STEP 1. 막대(Bar) 그래프

import matplotlib.pyplot as plt
%matplotlib inline

# 그래프 데이터 
subject = ['English', 'Math', 'Korean', 'Science', 'Computer']
points = [40, 90, 50, 60, 100]

# 축 그리기
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)

# 그래프 그리기
ax1.bar(subject, points)

# 라벨, 타이틀 달기
plt.xlabel('Subject')
plt.ylabel('Points')
plt.title("Yuna's Test Result")

# 보여주기
plt.savefig('./barplot.png')  # 그래프를 이미지로 출력
plt.show()                    # 그래프를 화면으로 출력

1. 데이터 정의

%matplotlib inline은 IPython에서 사용하는 매직 메서드. 그래프와 같은 그림, 소리, 애니메이션과 같은 결과물을 Rich output이라 하는데, 이를 표현하는 방식을 정의함.

 

2. 축 그리기

그래프를 그리는 순서는 우선 하나의 그림(figure) 객체를 만들고 그 안에 하위 그래프(subplot)를 추가

이 figure() 객체에 add_subplot 메서드를 이용해 축을 그려주고, figsize 인자 값을 주어 그래프의 크기를 정할 수 있음.

fig = plt.figure()
ax1 = fig.add_subplot(2,2,1) 2*2 모양으로 총 4개 그릴예정이고 이 친구는 1 번자리 라는 뜻.
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,4)

 

3. 그래프 그리기

bar() 메서드를 이용해 막대그래프를 그리고, (x,y) 를 적어줌.

 

4. 그래프 요소 추가

x라벨, y라벨, 제목을 추가하기 위해서는 xlabel() 메서드와 ylabel() 메서드 title() 메서드를 이용


STEP 2. 선(line) 그래프

from datetime import datetime
import pandas as pd
import os

# 그래프 데이터 
csv_path = os.getenv("HOME") + "/aiffel/data_visualization/data/AMZN.csv"
data = pd.read_csv(csv_path ,index_col=0, parse_dates=True)
price = data['Close']

# 축 그리기 및 좌표축 설정
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
price.plot(ax=ax, style='black')
plt.ylim([1600,2200])
plt.xlim(['2019-05-01','2020-03-01'])

# 주석달기
important_data = [(datetime(2019, 6, 3), "Low Price"),(datetime(2020, 2, 19), "Peak Price")]
for d, label in important_data:
    ax.annotate(label, xy=(d, price.asof(d)+10), # 주석을 달 좌표(x,y)
                xytext=(d,price.asof(d)+100), # 주석 텍스트가 위차할 좌표(x,y)
                arrowprops=dict(facecolor='red')) # 화살표 추가 및 색 설정

# 그리드, 타이틀 달기
plt.grid()
ax.set_title('StockPrice')

# 보여주기
plt.show()

1. 그래프 데이터

Pandas의 Series는 선 그래프를 그리기에 최적의 자료구조를 갖추고 있음. price = data['Close']가 바로 Pandas의 Series.

좌표축설정 : plt.xlim(), plt.ylim()을 통해 x, y 좌표축의 적당한 범위를 설정

주석 : 그래프 안에 추가적으로 글자나 화살표 등 주석을 그릴 때는 annotate() 메서드를 이용

그리드 : grid() 메서드를 이용하면 그리드(격자눈금)를 추가

 

2. 축 그리기 및 좌표축 설정

figure로 객체 생성 뒤 add_subplot 해도 되지만, 이를 생략하는 방법이 있음.

plt.plot() 명령으로 그래프를 그리면 matplotlib은 가장 최근의 figure 객체와 그 서브플롯을 그림

plt,plot(x,y,마커옵션,색상) 등을 조정가능.

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')
 
이렇게 4줄이
 
plt.plot(x, np.sin(x),'o')
plt.plot(x, np.cos(x),'--', color='black')
 

이렇게 2 줄로 줄일 수 있음

  • (pandas).plot 메서드 인자들.
    • label: 그래프의 범례 이름.
    • ax: 그래프를 그릴 matplotlib의 서브플롯 객체.
    • style: matplotlib에 전달할 'ko--'같은 스타일의 문자열
    • alpha: 투명도 (0 ~1)
    • kind: 그래프의 종류: line, bar, barh, kde
    • logy: Y축에 대한 로그 스케일
    • use_index: 객체의 색인을 눈금 이름으로 사용할지의 여부
    • rot: 눈금 이름을 로테이션(0 ~ 360)
    • xticks, yticks: x축, y축으로 사용할 값
    • xlim, ylim: x축, y축 한계
    • grid: 축의 그리드 표시할지 여부
  • pandas의 data가 DataFram일 때 plot 인자들
    • subplots: 각 DataFrame의 칼럼을 독립된 서브플롯에 그린다.
    • sharex: subplots=True 면 같은 X 축을 공유하고 눈금과 한계를 연결한다.
    • sharey: subplots=True 면 같은 Y 축을 공유한다.
    • figsize: 그래프의 크기, 튜플로 지정
    • title: 그래프의 제목을 문자열로 지정
    • sort_columns: 칼럼을 알파벳 순서로 그린다.

 


 

728x90

'Study (Data Science) > ML' 카테고리의 다른 글

Batch size, Epoch, Iteration  (0) 2022.12.06
여러가지 머신러닝 모델들  (0) 2022.12.06
Day2. 데이터 전처리  (0) 2022.12.05
Day1. 데이터, 데이터베이스  (0) 2022.12.04
EDA (Explratory Data Analysis)  (1) 2022.12.02

댓글