[Matplotlib] 1. 기본 그래프(꺾은선) - 레이블, 범례, 축 범위 설정하기
파이썬 시각화 라이브러리, 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]})
(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)
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})
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")
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])
✔️ Reference
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기