[Python] plt.plot의 기본적인 함수와 사용법

2020. 8. 26. 19:43Tip/Python

1-09. 시각화 기초 (그래프)

Graph Visualization


Load Packages

In [1]:
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline # plt.show()를 하지 않아도 자동으로 생성되도록 만든다.
UsageError: unrecognized arguments: # plt.show()를 하지 않아도 자동으로 생성되도록 만든다.

Basic Attributes

parameters

alpha : 투명도
kind : 그래프 종류 'line', 'bar', 'barh', 'kde'
logy : Y축에 대해 Log scaling
use_index : 객체의 색인을 눈금 이름으로 사용할지 여부
rot : 눈금 이름 돌리기 (rotating) 0 ~ 360
xticks, yticks : x, y축으로 사용할 값
xlim, ylim : X, Y축의 한계
grid : 축의 그리드를 표현할지 여부

functions

subplots : 각 column에 독립된 subplot 그리기
sharex, sharey : subplots=True 이면 같은 X,Y축을 공유하고 눈금과 한계를 연결
figsize : 생성될 그래프의 크기를 tuple로 지정
title : 그래프의 제목 지정
legend : subplot의 범례 지정
sort_columns : column을 알파벳 순서로 그린다.


Matplotlib 사용하기


점선 그래프 그리기

In [2]:
plt.plot(np.random.randn(50).cumsum(), 'k--')  
# cumsum은 random하게 생성된 값들의 누적
# 즉, 정규화된 난수를 누적그래프로 만들었다. 
# k는 검은색을 뜻하며, --를 붙여서 점선으로 만든다.
plt.show()

Multi Graph

subplot함수를 통해서 사용한다. subplot의 index는 파이썬의 기본적인 인덱싱 방법과 다르다. 첫 번째 판의 index는 1이고 그 다음 2,3,4... 순으로 진행된다.

In [5]:
# 1행 2열 plot 판
plt.subplot(1, 2, 1)
plt.subplot(122)
plt.show()

Multi Graph 그리기

In [6]:
# 2행 2열 plot
plt.subplot(2, 2, 1)
plt.plot(np.random.randn(50).cumsum(), 'k--')
plt.subplot(2, 2, 2)
plt.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)
plt.subplot(2, 2, 3)
plt.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30))
plt.show()

그래프 선 옵션

  • 그래프를 그릴 때 표시 되는 색이나 마커 패턴을 바꾸는 것 확인할 수 있다.
    • 색상: b(파란색), g(초록색), r(빨간색), c(청록색), y(노란색), k(검은색), w(흰색)
    • 마커: o(원), v(역삼각형), ^(삼각형), s(네모), +(플러스), .(점)
In [7]:
x = np.arange(30)
y = np.arange(30) + 3 * np.random.randn(30)
In [8]:
plt.plot(x, y, 'g--')
plt.show()
In [9]:
plt.plot(x, y, 'g+')
plt.show()
In [10]:
plt.plot(x, y, 'b.')
plt.show()
In [11]:
# 검은색은 k
plt.plot(x, y, 'k.')
plt.show()

그래프 사이즈 조절

  • plt.figure 안에 figsize를 이용하여 가로, 세로 길이를 조절할 수 있다. 단위는 inch이다.
In [12]:
plt.figure(figsize=(10, 10))
plt.plot(x, y, 'k.')
plt.show()
  • 여러 그래프 그리고 그에 대한 크기 조절
In [13]:
plt.figure(figsize=(10, 10))
plt.subplot(2, 2, 1)
plt.plot(x, y, 'g--')
plt.subplot(2, 2, 2)
plt.plot(x, y, 'k.')
plt.subplot(2, 2, 3)
plt.plot(x, y, 'b.')
plt.show()
  • 비율 조절
In [14]:
plt.figure(figsize=(20, 10))
plt.subplot(2, 2, 1)
plt.plot(x, y, 'g--')
plt.subplot(2, 2, 2)
plt.plot(x, y, 'k.')
plt.subplot(2, 2, 3)
plt.plot(x, y, 'b.')
plt.show()

그래프 겹치기 + legend 달기

In [15]:
data = np.random.randn(30).cumsum()

plt.plot(data, 'k--', label='Default')
plt.plot(data, 'k-', drawstyle='steps-post', 
         label='steps-post')
plt.legend(loc='best')
plt.show()

Plot Title 달기

In [17]:
plt.plot(np.random.randn(1000).cumsum())
plt.title('Matplotlib Plot')
plt.xlabel('Stages')
plt.show()

종합

In [18]:
plt.plot(np.random.randn(1000).cumsum(), 
        'k', label='one')
plt.plot(np.random.randn(1000).cumsum(), 
        'k--', label='two')
plt.plot(np.random.randn(1000).cumsum(), 
        'k.', label='three')

plt.legend(loc='best')
plt.show()

---

그래프 저장하기

In [16]:
plt.savefig("fig_saved.svg")
<Figure size 432x288 with 0 Axes>