본문 바로가기

Python/Data Analysis Library

Part03 Chapter.02 데이터 분석 라이브러리 08 pyplot 기초 (실습)

matplotlib.pyplot


  • 데이터 분석의 꽃, 시각화 방법에서 가장 많이 사용되는 라이브러리인 matplotlib을 배워보자!
  • matplotlib은 파이썬에 다양한 그래프 작성방법을 제공한다.
  • seaborn, folium 같은 다른 다양한 시각화 라이브러리들은 matplotlib을 dependency로 가지고 있거나, 영향을 많이 받았다.
  • matplotlib은 figure()를 기본적으로 그래프 그리는 객체로 사용하고, plot(), scatter() 함수를 이용하여 원하는 그래프를 그린다.

 

 # matplotlib은 이렇게 불러오는 것이 관행이다.

 

import matplotlib.pyplot as plt

 

# 도화지를 깔고
plt.figure()
# 해당 리스트를 기준으로 하는 선을 그린다.
plt.plot([0,1,2,3,4], [1, 2, 4, 8, 16]) #plot(x,y)
# plot([1,2,3,4,5]) 이면 기본적으로 y축으로 나옴

# 보여주기
plt.show()

 

 

 

# sample data를 하나 만들어보자! 

 

x = ["Americano", "Cafe Latte", "Vanilla Latte", "Cold Brew", "Flat White"]
y = [1463, 301, 866, 905, 274]

 

 

도화지에 그림을 그려보자!


순서대로 하나씩 세팅해본다.

  1. figure & figsize 
  2. barplot
  3. grid
  4. title
  5. axis label
  6. lineplot
  7. set label
  8. legend
  9. set limit in axis

 

 

 

# 라인 & 막대 그래프 그리기

 

# 라인 그래프 그리기
plt.figure(figsize=(8,6)) 
# figsize= (0,0) 가로세로 튜플
plt.grid(alpha=0.3, color="black", linewidth=0.5)
# grid(격자무늬) alpha 진한정도 color="red", linewidth=굵기
plt.title("Coffee Sales in March", fontsize =20 , loc="left" )
# loc 로케이션 위치
plt.xlabel("Menu",fontsize =12, )
# x축 이름
plt.ylabel("sales",fontsize =12) 
# y축 이름
# plt.plot(x,y) 
# 라인 그래프 - 경향을 나타내는데 적합
plt.show()

 

 

# 막대 그래프 그리기
plt.figure(figsize=(8,6)) 
# figsize= (0,0) 가로세로 튜플
plt.grid(alpha=0.3, color="black", linewidth=0.5) 
# grid(격자무늬) alpha 진한정도 color="red", linewidth=굵기
plt.title("Coffee Sales in March", fontsize =20 , loc="left" ) 
# loc 로케이션 위치
plt.xlabel("Menu",fontsize =12, ) 
# x축 이름
plt.ylabel("sales",fontsize =12) 
# y축 이름
plt.bar(x, y, color="lime",label="Sales")
# 막대그래프, barh() 수평적 그래프 나와
plt.plot([100,200,400,800,1600],label="Google Trend")
# 새로운 라인그래프 추가
plt.legend() 
# 범례를 그려줌 loc를 통해 위치 조정가능! 현재위치는 "best" 
# 오른쪽 위에 표시되어 있는것을 확인 가능!
plt.ylim(0,2000) 
# y축의 범위조정
plt.yticks([num for num in range(0, 2000, 200)])    
#숫자 눈금 간격의 지정가능
plt.show()

 

 

이번에는 scatterplot을 그려보자!


  1. figure & figsize
  2. scatterplot
  3. set color
  4. set marker

 

import numpy as np

x= np.random.random(1000) # 정규분포를 따르는 랜덤 샘플링
y= np.random.random(1000)

plt.figure(figsize=(6,6))
plt.scatter(x,y, color= "red", marker="o",s=10,alpha= 0.3 ) 
# marker > < * 등 다양한 기호로 표현가능 
# s는 사이즈 
# alpha는 짙은 정도
plt.show()

 

 

 

 

subplot을 이용하여 여러 개의 plot을 한번에 그려보자!


# subplot()을 이용하여 여러개의 plot을 하나의 figure에 출력할 수 있다.

# plt.subplot(nrows, ncols, index) number of rows, columns
# nrows와 ncols가 있다고 했을 때의 위치!
# 처음할 때 굉장히 헷갈린다!!! 2 x 2로 연습을 많이 해보자! :)

 

 

# plt.subplot(2, 1, 1) # 로우 2개 컬럼 1개의 1번쨰꺼
# plt.subplot(2, 1, 2) # 로우 2개 컬럼 1개의 2번째꺼

 

plt.figure(figsize=(6,8))

plt.subplot(1, 2, 1 ) 
plt.plot([2,5,6])

plt.subplot(3, 2, 2) 
plt.plot([1,2,3])

plt.subplot(3, 2, 4) 
plt.bar([1,2,3],[4,5,6])

plt.subplot(3, 2, 6)
plt.plot([4,5,6])

plt.show()

 

 

 

번외. DataFrame으로 바로 plotting 가능


# sample data를 다시 만들자!
x = ["Americano", "Cafe Latte", "Vanilla Latte", "Cold Brew", "Flat White"]
y = [1463, 301, 866, 905, 274]

 

## 번외. DataFrame으로 바로 plotting 가능
import pandas as pd

df = pd.DataFrame({"Menu" : x, "Count" : y})
df.plot(kind="bar", x="Menu", y="Count")
# df.plot(kind ="bar") 
# kind ="bar"안쓰면 plot가 디폴트

df = pd.DataFrame(data= y, index= x, columns=["Count"])
df.plot(kind ="bar") 
# 위에 두 코드와 더 위의 두 코드 둘다 결과 그래프가 동일하다.
# 아래는 데이터를 y, 인덱스를 x, 열이름을 Count로 하였고,
# 위는 x를 Menu, Y를 Count라는 데이터 프레임을 만들고 하였다. 

# 판다스 데이터 프레임도 matplotlib 대신 바로 plot를 써서 그릴수 있다.