파이썬 시각화 라이브러리, Matplotlib 기본 사용법


✔️ 학습 목표

  • 기본 그래프(꺾은선 그래프) 그리기
  • 축 레이블(Label) 설정하기
  • 범례(Legend) 표시하기
  • 축 범위 지정하기


1. 라이브러리 로드

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


2. 꺾은선 그래프 그리기

Matplotlib에선 plot() 함수로 꺾은선 그래프를 그릴 수 있다.

  • plot 함수에 하나의 데이터만 입력하면 y-values(y 값)으로 인식 (x값은 0, 1, … 정수로 인식)
  • 입력할 수 있는 데이터 형식은 list, tuple, dictionary, Numpy array, 데이터프레임 등이 있다.

(1) 하나의 데이터(y-values)만 입력

기본 구조는 plt.plot(y-values)이며 아래 코드는 모두 같은 그래프 결과를 보인다.

# 1) List 입력
plt.plot([1, 3, 5, 7, 9])
# 2) Tuple 입력
plt.plot((1, 3, 5, 7, 9))
# 3) Numpy array 입력
plt.plot(np.array([1, 3, 5, 7, 9]))
# 4) Pandas Series 입력
plt.plot(pd.Series([1, 3, 5, 7, 9]))
# 5) Pandas DataFrame 입력
plt.plot(pd.DataFrame([1, 3, 5, 7, 9]))
# 6) Dictionary 입력
plt.plot("y", data={"y": [1, 3, 5, 7, 9]})
Fig 1. 하나의 데이터만 입력했을 때의 그래프 출력물


(2) 두 개의 데이터(x, y) 입력

기본 구조는 plt.plot(x-values, y-values)이며 아래 코드는 모두 같은 그래프 결과를 보인다.

# 1) List 입력
plt.plot([1, 3, 5, 7], [10, 15, 10, 20])
# 2) Tuple 입력
plt.plot((1, 3, 5, 7), (10, 15, 10, 20))
# 3) Numpy array 입력
arr = np.array([[1, 3, 5, 7], [10, 15, 10, 20]])
plt.plot(arr[0], arr[1])
# 4) Dictionary 입력
xy_dict = {"x": [1, 3, 5, 7], "y": [10, 15, 10, 20]}
plt.plot("x", "y", data=xy_dict)
Fig 2. x, y 데이터를 입력했을 때의 그래프 출력물


3. 축 레이블 설정하기

x 레이블 : xlabel(), y 레이블 : ylabel() 함수를 사용하면 그래프에 각 축에 대한 레이블을 표시할 수 있다.

(1) 축 레이블 입력하기

plt.xlabel("X")
plt.ylabel("Y")

(2) 축 레이블 파라미터

  • 여백(Padding) 추가
    • labelpad 파라미터를 추가하면 여백을 추가할 수 있음(단위 : pt)
  • 폰트(Font) 설정
    • fontdict={} : family, color, weight, size 속성 적용
  • 위치(location) 지정
    • loc 파라미터를 추가하면 레이블의 위치를 조정할 수 있음
      • x 레이블 : left, center, right
      • y 레이블 : bottom, center, top

(3) 파라미터를 추가하여 축 레이블 꾸미기

  • x 레이블은 X Values, y 레이블은 Y Values로 입력
  • 여백은 각각 10pt 설정
  • x 레이블은 오른쪽, y 레이블은 위에 위치하도록 설정
  • x 레이블은 빨간색, y 레이블은 파란색으로 설정
    • b는 blue의 약자, r는 red의 약자이다.
  • 폰트는 fantasy, 볼드, 15pt로 설정
x = [1, 3, 5, 7, 9, 11, 13]
y = [30, 10, 10, 30, 10, 10, 30]

plt.plot(x, y)
plt.xlabel("X Values", labelpad=10, loc="right"
        , fontdict={"family": "fantasy", "color": "b", "weight": "bold", "size": 15})
plt.ylabel("Y Values", labelpad=10, loc="right"
        , fontdict={"family": "fantasy", "color": "b", "weight": "bold", "size": 15})
Fig 3. 위 코드에 대한 결과물


4. 범례 표시하기

범례(Legend)는 그래프에 데이터의 종류를 표시하기 위한 텍스트로 legend() 함수를 사용하면 범례를 표시할 수 있다.

(1) 범례 입력하기

plt.legend()

(2) 범례 파라미터

  • 위치(location) 지정
    • loc 파라미터를 추가하면 레이블의 위치를 조정할 수 있음
      • (x위치, y위치) : %로 설정
      • ‘best’, ‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’, ‘center left’, ‘center right’, ‘lower center’, ‘upper center’, ‘center’
  • 열 개수(ncols) 지정
    • ncol 로 한 줄에 표시할 범례의 개수를 지정할 수 있음
  • 폰트 크기(font size) 지정
    • fontsize 단위(pt)
  • 테투리 변경
    • frameon 범례 테두리 표시 여부 (True or False)
    • shadow 그림자 표시 여부 (True or False)
  • 색상 변경
    • facecolor : 범례 배경색
    • edgecolor : 범례 가장자리 색상

(3) 파라미터를 추가하여 범례 꾸미기

x1 = [1, 3, 5, 7, 9, 11, 13]
y1 = [1, 3, 7, 10, 13, 15, 10]
x2 = [1, 3, 5, 7, 9, 11, 13]
y2 = [3, 7, 12, 20, 22, 25, 27]

plt.plot(x1, y1, label="W")
plt.plot(x2, y2, label="M")
plt.xlabel("X Values")
plt.ylabel("Y Values")
plt.legend(loc="lower right", fontsize=12, ncol=2, shadow=True, facecolor="#EEEEEE")
Fig 4. 위 코드에 대한 결과물


5. 축 범위 지정하기

그래프의 x, y 축 범위는 xlim(), ylim(), axis() 함수를 사용하면 범위 지정이 가능함

  • xlim() : x 축 범위 지정 또는 반환
  • ylim() : y 축 범위 지정 또는 반환
  • axis() : x, y 축 범위 지정 또는 반환
# 단일값 혹은 튜플, 리스트로 축 범위 지정할 수 있음
plt.xlim(x최솟값, x최댓값)
plt.xlim([x최솟값, x최댓값])
plt.xlim((x최솟값, x최댓값))

plt.ylim(y최솟값, y최댓값)
plt.ylim([y최솟값, y최댓값])
plt.ylim((y최솟값, y최댓값))

# 튜플 또는 리스트 값으로 축 범위 지정할 수 있음
plt.axis((x최솟값, x최댓값, y최솟값, y최댓값))
plt.axis([x최솟값, x최댓값, y최솟값, y최댓값])

🔍 예시로 이해하기

  • x 축의 범위는 0 ~ 15 설정
  • y 축의 범위는 0 ~ 30 설정
x1 = [1, 3, 5, 7, 9, 11, 13]
y1 = [5, 6, 7, 10, 13, 15, 10]
x2 = [1, 3, 5, 7, 9, 11, 13]
y2 = [7, 9, 12, 20, 22, 25, 27]

plt.plot(x1, y1, label="W")
plt.plot(x2, y2, label="M")
plt.xlabel("X Values")
plt.ylabel("Y Values")
plt.legend(loc="lower right", fontsize=12, ncol=2, shadow=True, facecolor="#EEEEEE")
plt.axis([0, 15, 0, 30])
Fig 5. 축 범위 지정 전(왼쪽), 후(오른쪽) 그래프


✔️ Reference


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기