import matplotlib.pyplot as plt
Matplotlib은 파이썬에서 가장 널리 사용되는 시각화 라이브러리 중 하나
근데 코딩량이 많음
그리고 하나하나 설정해줘야함 씨본이랑 다르게
import numpy as np 넘파이 쓰려고
import pandas as pd 판다스 프레임 쓰려고
import matplotlib.pyplot as plt 맽플랏립에서 파이플럿만 plt로 쓸거임
import seaborn as sns 씨본 쓰려고
import koreanize_matplotlib 한글처리하려고
import warnings 라이브러리 쓸때 자꾸자꾸 변해 코드 실행하면 이거 나중에 없어지니까
되도록이면 이거 쓰지 마세요 라고 뜰거임
warnings.filterwarnings(action='ignore') 그래서 그런 경고 보여주지 마세요 라고 하는거
%config InlineBackend.figure_format='retina'레티나는 고해상도로 출력하기 위한 것
그래프 그리기 (Line plot)
- Line plot 그리기 기본 틀
plt.plot(stock['Day'], stock['Close'])
plt.show()
그리는 방법들을 살펴보자 !
x축 y축 지정하기
① plt.plot(데이터 프레임 명['칼럼명 1'], 데이터 프레임 명['칼럼명 2']) (x 축에 뭐 깔껀지, y 축에 뭐 깔건지)
또는
② plt.plot('칼럼명 1', '칼럼명 2', data=데이터 프레임 명)
차이점 : ② 의 경우에는 예를 들어 df 이름이 stock이었다 치면 stock의 데이터들만 쓸 수 있는데
① 은 다른 데이터프레임의 것도 가져와서 그릴 수 있음(여러 데이터프레임꺼를 쓸 수 있다)
보통 ② 를 쓰긴하지만 ① 을 써야하는 경우도 있을 수 있으니 그때그때 편한걸로 쓰면 됨
그래프 꾸미기(너무 꾸미진 말자 깔끔하게)
x축 y축 이름과 타이틀 지정
x축과 y축의 이름이 필요하다 xlabel(), ylabel() 함수를 사용해서 각 축의 이름을 지정
plt.plot(stock['Day'], stock['Close'])
plt.title('Stock Closing Price', size=15, pad=10) 타이틀. 사이즈를 안주면 글씨 크기
가 작게 나옴
plt.xlabel('Day') x축 이름
plt.ylabel('Price') y축 이름
선 스타일 설정

plt.plot(stock['Day'], stock['Close'], 'go--')g=green, o=circle marker,
--=dashed line style
plt.title('Stock Closing Price', size=15, pad=10)
plt.xlabel('Day')
plt.ylabel('Price')
plt.show()

여러 그래프 겹쳐서 그리기
show() 함수로 마무리 하기 전에 plot() 함수를 반복해 사용
plt.plot(stock['Day'], stock['Open'], 'go--')
plt.plot(stock['Day'], stock['Close'], 'rs--')
이렇게 표현도 된다 컬러, 마커(동그라미), 마커사이즈, 라인스타일, 라인두께 하나하나 설정 가능
plt.plot(stock['Day'], stock['Open'], color='g', marker='o',
markersize=3, linestyle='--', linewidth=1)
plt.plot(stock['Day'], stock['Close'], color='r', marker='s',
markersize=3, linestyle='--', linewidth=1)
범례, 괘선 추가
- legend() 함수를 사용해 범례 표시
- label 속성을 사용해 각 그래프의 이름을 지정한 후 legend() 함수를 사용
- grid() 함수를 사용해 괘선 표시
1번 방법
plt.plot(stock['Day'], stock['Open'], 'o--', label='Open')
plt.plot(stock['Day'], stock['Close'], 's--', label='Close')
plt.title('Stock Price', size=15, pad=10)
plt.xlabel('Day')
plt.ylabel('Price')
plt.legend() # loc='upper left' 등으로 위치 변경 가능, default='best'
plt.grid() # axis 지정 가능 ('both', 'x', 'y')
plt.show()
2번 방법
plt.plot(stock['Day'], stock['Open'], 'o--')
plt.plot(stock['Day'], stock['Close'], 's--')
plt.title('Stock Price', size=15, pad=10)
plt.xlabel('Day')
plt.ylabel('Price')
plt.legend(['Open', 'Close']) 여기에 리스트로 줘도 됨
plt.grid() # axis 지정 가능 ('both', 'x', 'y')
plt.show()

추가 기능
축 범위 조정하기
plt.ylim(**100**, **160**)
- xlim(), ylim() 함수로 각 축에 표시할 범위를 지정할 수 있음
위 코드 돌리면 y축 범위가 100에서 160까지로 지정해서 그림
조정 안해주면 최대값이랑 최솟값으로 그려주는데 이렇게 되면 왜곡이 있을 수도 있음
x값을 조절할 수도 있겠지만 x값은 최대최소 바꿀일이 잘 없어서 y값 조절을 보통 씀
그래프 크기 조정
- figure() 함수를 사용해 그래프 크기 조절
plt.figure(figsize=(**5**, **5**)) 크기를 적당히 줘서 보기 좋게
수평선, 수직선 추가
- axhline(), axvline() 함수를 사용해 임의 위치에 가로선, 세로선 그리기
plt.plot(stock['Day'], stock['Close'], marker='o')
plt.title('Stock Closing Price', size=15, pad=10)
plt.axhline(135, color='green', linestyle='--', linewidth=0.5)
가로선을 그을 때는 y값이 필요함 / 평균 어느정도인지 보고싶을때 가로선 사용
plt.axvline(10, color='green', linestyle='--', linewidth=0.5)
새로선을 그을 때는 x값이 필요함 / 점수가 가장 높은거 보고싶을때 새로선 사용
그래프에 텍스트 추가
- text() 함수를 사용해 임의 위치에 텍스트를 출력
plt.plot(stock['Day'], stock['Close'], marker='o')
plt.title('Stock Closing Price', size=15, pad=10)
plt.axhline(135, color='grey', linestyle='--')
plt.axvline(10, color='grey', linestyle='--')
plt.text(-0.5, 135.2, '135', color='r') 하늘색이 적고싶은 글 이건 x축
plt.text(10.2, 125.5, '10', color='r') 이건 y축
plt.show()
위, 아래로 그래프 그리기
- subplot(행 수, 열 수, 위치) 형태로 지정

하늘색 먼저 보자면
2행 1열을 만들겠다 그 중 첫번째다
2행 1열을 만들겠다 그 중 두번째다
이렇게 그리겠다는거임
- tight_layout() 함수를 사용해 그래프가 겹치지 않게 정리할 수 있음
1. 위 아래로 그리기
plt.subplot(2, 1, 1)
plt.plot(stock['Day'], stock['Open'], color='tab:blue', marker='o')
plt.title('Opening Price')
plt.subplot(2, 1, 2)
plt.plot(stock['Day'], stock['Close'], color='tab:orange', marker='s')
plt.title('Closing Price')
plt.tight_layout()
#이게 없으면 오프닝 프라이스 아래 숫자랑 클로징 프라이스가 겹쳐져 버림
서브플롯 쓸때 요건 필수로 써야겠음
plt.show()
2. 옆으로 그래프 그리기
plt.figure(figsize=(6,3))
plt.subplot(1, 2, 1)#1행 2열짜리 첫번째 왼
plt.plot(stock['Day'].astype(int), stock['Open'], color='tab:blue', marker='o')
plt.title('Opening Price')
plt.subplot(1, 2, 2)#1행 2열의짜리 두번째 오
plt.plot(stock['Day'].astype(int), stock['Close'], color='tab:orange', marker='s')
plt.title('Closing Price')
plt.tight_layout()
plt.show()
'KT 에이블스쿨 8기 > 데이터분석' 카테고리의 다른 글
| 이변량 분석 ③ - 범주형 → 범주형 (0) | 2025.11.25 |
|---|---|
| 이변량 분석 ② - 범주형 → 수치형 (1) | 2025.11.25 |
| 단변량 분석 ② - 범주형 (0) | 2025.11.25 |
| 단변량 분석 ① - 수치형 (0) | 2025.11.25 |
| 시각화라이브러리 ② - Seaborn (0) | 2025.11.25 |