matplotlib

모듈 설치 : 주피터 노트북에서 설치 가능

!pip install matplotlib

모듈 버전 확인

import matplotlib
matplotlib.__version__ 

모듈 import

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['axes.unicode_minus'] = False # - 부호 처리
# 주피터 노트북에서 이미지 출력
%matplotlib inline 

matplotlib.pyplot

변수 선언 및 초기화

# 변수 선언 및 초기화
x = np.array([1, 2, 3, 4, 5]) 
y1 = x 
y2 = x ** 2
y3 = x ** 3

plot()

plot(y) : 인수 1개 y축

plt.plot(y1)
plt.show()

plot(x,y) : 인수 2개 x, y축

plt.plot(x,y1)
plt.show()

Title 제목 지정

title 출력 1

plt.plot(x,y1)
plt.title('X-Y Graph', loc='right', pad=10)
plt.show()

title 출력 2

title_font = {
    'fontsize': 14,
    'fontweight': 'bold'
}
plt.plot(x,y1)
plt.title('X-Y Graph', loc='right', pad=10)
plt.title('X-Y Graph', loc='left', fontdict=title_font, pad=10)

plt.show())

x,y 레이블

plt.plot(x,y1)
plt.xlabel('x-lable')
plt.ylabel('y-lable')
plt.show()

axis(축범위)

axis_xy = [0,6,0,30]
plt.plot(x, y2)
plt.axis(axis_xy)
plt.show()

스타일 지정하기

이미지 참조 : https://wikidocs.net/92083

색상 지정하기

plt.plot(x, y2, 'r')
plt.show()

마커 지정하기

plt.plot(x, y2, 'o')
plt.show()

선 스타일

plt.plot(x, y2, '--')
plt.show()

색상, 마커, 선 모두 지정

plt.plot(x, y2, 'ro-')
plt.show()

속성으로 지정하기

plt.plot(x,y1, 'ro-') 
plt.plot(x, y2, color='green', marker='o', linewidth=3)
plt.plot(x, y3, color='#0000ff', marker='o', linewidth=3, markersize=10)
plt.show()

plot 여러개 그리기

plot() 여러개 사용

plt.plot(x, y1, '--')
plt.plot(x, y2, 's')
plt.plot(x, y3, '^')
plt.show()

plot() 인수 여러개 사용

plt.plot(x, y1, 'r', x, y2, 'g', x, y3, 'b')
plt.show()

선/마커/색 모두 적용

plt.plot(x, y1, 'r--', x, y2, 'go', x, y3, 'b^')
plt.show()

grid() 설정

# x,y 축 grid
plt.plot(x, y1, 'r--', x, y2, 'go', x, y3, 'b^')
plt.grid(True) 
plt.show()
# y 축 grid
plt.plot(x, y1, 'r--', x, y2, 'go', x, y3, 'b^')
plt.grid(True, axis='y') # 가로방향
plt.show()

범례 표시

plt.plot(x, y1, 'r--', label='y1')
plt.plot(x, y2, 'go', label='y2')
plt.plot(x, y3, 'b^', label='y3')
plt.legend()
plt.show()

Tick 간격

plt.plot(x, y1, 'r--', x, y2, 'go', x, y3, 'b^')
plt.xticks(np.arange(0, max(x)+1))
plt.yticks(np.arange(0, max(y3)+10, 10))
plt.show()

그래프 영역 채우기

fill_between(x범위, y범위, 색상alpha)

plt.plot(x,y2)
plt.fill_between(x[1:4], y2[1:4], alpha=0.5)      
plt.show()

fill_betweenx(y범위, x범위, 색상alpha)

plt.plot(x,y2)
plt.fill_betweenx(y2[1:4], x[1:4], alpha=0.5)      
plt.show()

fill_between(x, y1, y2)

plt.plot(x, y1)
plt.plot(x, y2)
plt.fill_between(x[1:4], y1[1:4], y2[1:4], color='gray', alpha=0.5)
plt.show()

수직/수평선 그리기

plt.plot(x, y1, linewidth='2')
plt.axhline(3, 0, 0.5, color='red', linestyle='--', linewidth='2')
plt.axvline(3, 0, 0.5, color='red', linestyle='--', linewidth='2')
plt.show()
plt.plot(x, y1, linewidth='2')
plt.plot(x[2], y[2], 'ro')
plt.axhline(3, 0, 0.5, color='gray', linestyle='--', linewidth='2')
plt.axvline(3, 0, 0.5, color='gray', linestyle='--', linewidth='2')
plt.annotate('({},{})'.format(x[2], y[2]),(x[2]-0.2, y[2]+0.2))
plt.show()

막대 그래프 그리기

수직 막대 그래프

years = ['2019', '2020', '2021']
values = [100, 200, 300]

plt.bar(years,values)
plt.show()

수평 막대 그래프

years = ['2019', '2020', '2021']
values = [100, 200, 300]

plt.bar(years,values)
plt.show()

산포도 그래프 그리기

plt.plot(x, y1, 'ro')
plt.scatter(x, y2, c='green')
plt.scatter(x, y3, c='blue', s=100)
plt.grid()
plt.show()

히스토그램 그리기

data = np.array([0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9])

plt.hist(data, bins=10)  # 히스토그램  bins는 기둥의 수
plt.show()