[EDA] Matplotlib 기초1

박미영·2023년 3월 30일
0

📍Matplotlib 그래프 기본 형태

  • plt.figure(figsize=(10, 6)): 데이터를 그래프를 그려주기 위한 배경 설정
  • plt.plot(x축, y축)
  • plt.show(): 그래프를 화면에 나타나도록 함



📌그래프 그리기

import matplotlib.pyplot as plt  #pyplot - matlab에서 사용하는 시각화 기능을 넣어놓은 것
from matplotlib import rc   # 한글 설정

rc("font", family='Malgun Gothic')

# %matplotlib inline - jupyter notebook에 그래프를 바로 나타나게 해주는 것 
get_ipython().run_line_magic("matplotlib", "inline")
plt.figure(figsize=(10, 6))  # 데이터를 그래프를 그려주기 위한 배경
plt.plot([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 1, 2, 3, 4, 2, 3, 5, -1, 3])
plt.show()



📌예제1: 그래프 기초

📍삼각함수 그리기

  • np.arange(a, b, s): a부터 b까지 s의 간격
  • np.sin(value)
import numpy as np

t = np.arange(0, 12, 0.01)
y = np.sin(t)
plt.figure(figsize=(10, 6))
plt.plot(t, np.sin(t))
plt.plot(t, np.cos(t))
plt.show()



📍그래프 추가 사항

  1. 격자무늬 추가
  2. 그래프 제목 추가
  3. x축, y축 제목 추가
  4. 범례 추가(각 선 데이터 의미 구분)



1. 격자무늬 추가

plt.grid(True or False)


plt.figure(figsize=(10, 6))
plt.plot(t, np.sin(t))
plt.plot(t, np.cos(t))
plt.grid(True)   # 격자무늬
plt.show()
  • plt.grid(True)

  • plt.grid(False)



2. 그래프 제목 추가

plt.title("제목")


plt.figure(figsize=(10, 6))
plt.plot(t, np.sin(t))
plt.plot(t, np.cos(t))
plt.grid(True)   # 격자무늬
plt.title("Example of sinewave")   # 제목
plt.show()



3. x축, y축 제목 추가

x축 - plt.xlabel("time")
y축 - plt.ylabel("Amlitude")

plt.figure(figsize=(10, 6))
plt.plot(t, np.sin(t))
plt.plot(t, np.cos(t))
plt.grid(True)   # 격자무늬
plt.title("Example of sinewave")   # 제목
plt.xlabel("time")  # x축 - 시간
plt.ylabel("Amplitude") # y축 - 진폭
plt.show()



4. 범례 추가(각 선 데이터 의미 구분)

  • 범례 사용 방법
  1. plt.legend(labels=["sin", "cos"])
  2. plt.plot(x, y, label='데이터 의미') + plt.legend()
  • plt.legend() - 아무것도 작성하지 않았을 때

✔️방법 1: plt.legend(labels=["sin", "cos"])


✔️방법 2: plt.plot(x, y, label='데이터 의미') + plt.legend()

plt.figure(figsize=(10, 6))
plt.plot(t, np.sin(t), label='sin')
plt.plot(t, np.cos(t), label='cos')
plt.grid(True)   # 격자무늬
plt.legend() # 범례
plt.title("Example of sinewave")   # 제목
plt.xlabel("time")  # x축 - 시간
plt.ylabel("Amlitude") # y축 - 진폭
plt.show

범례 위치

그래프를 그렸을 때 컴퓨터가 인식했을때 가장 빈 공간에 자동으로 그려준다.
위치를 바꾸고 싶은 경우에는 plt.legend(loc="위치)를 사용하면 된다.

  • plt.legend(loc="lower left")

  • plt.legend(loc=8) -> lower center (정수로 사용가능)



📌예제2: 그래프 커스텀

📍커스텀 1

t = np.arange(0, 5, 0.5)
t

plt.figure(figsize=(10, 6))
plt.plot(t, t, "r--")         # r:red, --:점선
plt.plot(t, t ** 2, "bs")    # b:blue
plt.plot(t, t ** 3, "g^")    # g:green, ^:위 화살표 방향
plt.show()



📍커스텀 2

t = list(range(0, 7))
y = [1, 4, 5, 8, 9, 5, 3]
plt.figure(figsize=(10, 6))
plt.plot(
    t, 
    y, 
    color = "green",     # 선 색상
    linestyle="dashed",  # --: 점선, -: 실선
    marker="o",          # 각 포인트 데이터 값마다 o 모양
    markerfacecolor="blue", # 각 포인트 데이터 값 색상
    markersize=15,       # 크기
)
plt.xlim([-0.5, 6.5])	# x축 범위
plt.ylim([0.5, 9.5])	 # y축 범위
plt.show()



📌예제3: scatter plot

t = np.array(range(0, 10))
y = np.array([9, 8, 7, 9, 8, 3, 2, 4, 3, 4])

📍plt.scatter()

점으로 이루어진 형태의 그래프

def drawGraph():
    plt.figure(figsize=(10, 6))
    plt.scatter(t, y)
    plt.show()
drawGraph()


📍plt.plot()

선으로 이어진 형태의 그래프

def drawGraph():
    plt.figure(figsize=(10, 6))
    plt.plot(t, y)
    plt.show()
drawGraph()



📍커스텀

colormap = t

def drawGraph():
    plt.figure(figsize=(20, 6))
    plt.scatter(t, y, s=50, c=colormap, marker=">")
    plt.colorbar()
    plt.show()
    
drawGraph()



📌예제4: Pandas에서 plot 그리기

matplotlib을 가져와서 사용한다.



  • kind="bar"
data_result["인구수"].plot(kind="bar", figsize=(10, 10))

  • kind="barh"
data_result["인구수"].plot(kind="barh", figsize=(10, 10))



다양한 matplotlib 그래프




"이 글은 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."

0개의 댓글