[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

[파이썬] Matplotlib 패키지

inu 2020. 7. 9. 12:40
반응형
  • Matplotlib 패키지는 데이터를 차트 혹은 플롯의 형태로 시각화하는 패키지이다.
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
  • 여기서 %matplotlib inline은 Cell Magic 명령어라고 불리우는 것으로 이는 파이썬 코드가 아니라 Jupyter에게 특정 기능을 수행하도록 하는 명령이다. Run 버튼을 눌러 실행하여 출력 영역에 그래프를 표시하도록 한다.

Bar chart

x = np.array(['Q1', 'Q2', 'Q3','Q4'])
y = np.array([ 234.0, 254.7, 144.6, 317.6])
plt.bar(x,y,color = 'purple')
plt.title('BAR CHART')
plt.show()

  • x를 x축으로하고, y를 y축으로 하는 바차트 하나를 그린다.
  • 파라미터로 활용되는 x와 y는 리스트, 튜플, numpy 배열 모두 가능하다. 길이만 맞으면 섞어서도 사용 가능하다.
  • title을 통해 차트의 제목을 정할 수 있다.
  • 한 번 show를 하면 plt 내부적으로 저장되었던 값들이 방출된다. (따라서 다시 show를 해주어도 똑같은 그림이 다시 그려지지 않는다.)

Histogram

x = np.random.randn(10000)
y = np.random.randn(10000)*3 + 4
plt.hist(x,bins=20,color='red',density=False, alpha = 0.3)
plt.hist(y,bins=20,color='green',density=False, alpha = 0.3)
plt.title('HISTOGRAM')
plt.show()

  • np.random.randn은 표준정규분포에서 난수를 일정개수 생성한다.
  • bins는 구간의 개수를 뜻한다. 구간이 너무 많으면 각 구간을 눈으로 판별하기 어려울 수 있으니 적절한 bins값을 주어야한다.
  • density는 y축을 빈도수가 아니라 밀도값으로 하고싶을 때 사용할 수 있다.
  • 한 번의 plt 작업에서 여러개의 그래프를 그리고 show하면 한 번에 여러개의 그래프가 보여진다.
  • alpha값을 조절해 투명도를 주절할 수 있다.

Box plot

x = np.random.randn(10000)*10+3
y = np.random.randn(10000)*10+5
z = np.random.randn(10000)*10+1
plt.boxplot([x,y,z],vert=True)
plt.title('BOX PLOTS')
plt.show()

  • vert 값을 False로 주면 박스 플롯이 가로로 출력된다.

Line plot

x = np.linspace(0,10,100)
y = np.sin(x)
plt.plot(x,y,color='orange',linestyle='-', linewidth=2)               # linestyle = '-'
plt.xlabel('X')
plt.ylabel('Sin')
plt.title('LINE PLOT')
plt.show()

  • linestyle을 ':',':.','--' 등으로 조절해 사용할 수 있다.
  • xlabel과 ylabel값을 부여할 수 있다.

범례 작성

x = np.linspace(0,10,100)
y = np.sin(x)
z = np.cos(x)
plt.plot(x,y,color='green',linestyle='--',linewidth=2, label = '1')
plt.plot(x,z,color='red',linestyle='--',linewidth=2, label = '2')
plt.xlabel('X')
plt.ylabel('Sin')
plt.legend()
plt.title('LINE PLOT')
plt.show()

  • legend() 함수로 범례를 부착할 수 있다.
  • 단 그래프에 label 값이 지정되어 구분이 가능해야 한다.

Scatter plot

x = np.linspace(0,10,100)
y = np.sin(x)
plt.plot(x,y,marker='o',linestyle='none',markersize=15,markerfacecolor='yellow',markeredgecolor='purple',markeredgewidth=2)
plt.xlabel('X')
plt.ylabel('Sin')
plt.title('SCATTER PLOT')
plt.show()

x = np.linspace(0,10,100)
y = np.sin(x)
plt.scatter(x,y,c='blue',marker='v',alpha=0.5)
plt.xlabel('X')
plt.ylabel('Sin')
plt.title('SCATTER PLOT')
plt.show()

x = np.linspace(0,10,100)
y = np.sin(x)
plt.scatter(x,y,c='red',marker='.',alpha=0.5)
plt.xlabel('X')
plt.ylabel('Sin')
plt.title('SCATTER PLOT')
plt.show()

  • line plot과 같이 plot 함수를 사용할 수도 있다. (linestyle='none', 라인없음)
  • scatter 함수를 기본으로 사용한다.
  • marker 값을 v,o,s 등의 문자로 바꿀 수 있다.
  • markersize, markerfacecolor, markeredgecolor, markeredgewidth 등의 값을 조절해 marker의 형태를 바꿀 수 있다.
반응형