matplotlib.pyplot
Matplotlib 라이브러리의 pyplot 모듈은 MATLAB과 비슷하게 명령어 스타일로 동작하는 함수들을 가지고 있다.
•
일반적으로 Numpy 어레이를 이용한다.
•
줄여서 plt 라고 부른다.
import matplotlib.pyplot as plt
Python
복사
pyplot.gca()
현재의 axes 객체를 가져온다.
matplotlib 기본 셋팅
import matplotlib.pyplot as plt
from matplotlib import rc # 한글 설정을 위한 함수
plt.rcParams['axes.unicode_minus'] = False # 마이너스 부호때문에 한글이 깨질 수가 있어 주는 설정
rc('font', family = 'Arial Unicode MS')
%matplotlib inline
Python
복사
1. 기본 기능 알아보기
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()
Python
복사
→ 하나의 숫자 리스트를 입력하면, 알아서 y값으로 인식하고 자동으로 x 값 [0,1,2,3] 을 만들어낸다.
# 위의 리스트 외에도 튜플, 넘파이 어레이 형태로 집어넣을 수 있다.
plt.plot((2,3,5,10))
# 또는
plt.plot(np.array([2,3,5,10])
# 마찬가지로 자동으로 x 값은 0,1,2,3 이 된다.
Python
복사
plt.plot([1,2,3,4],[1,4,9,16])
plt.show()
Python
복사
1-1. 스타일 지정하기
1-1-1. Format String
선의 색상과 형태를 지정하는 Format String을 세번째 인자에 입력할 수 있다.
•
‘ro’
‘red’ + 원형(’o’) 마커를 의미한다.
•
‘b-’
‘blue’ + 실선(’-’) 을 의미
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
plt.axis([0,6,0,20])
plt.show()
Python
복사
1-1-2. axis 축 설정
•
plt.axis([xmin, xmax, ymin, ymax])
축의 범위를 지정할 수 있다.
1-1-3. xlabel / ylabel 축 레이블 설정하기
•
plt.xlabel / plt.ylabel
plt.plot([1,2,3,4], [1,4,9,16])
plt.xlabel('X-Label')
plt.ylabel('Y-Label')
plt.show()
Python
복사
•
labelpad 파라미터
축 레이블의 여백을 지정한다.
# 여백 지정하기
plt.xlabel('X-Axis', labelpad=15)
plt.ylabel('Y-Axis', labelpad=20)
plt.show()
Python
복사
x축 레이블에 대해서 15pt, y축 레이블에 대해서 20pt 만큼의 여백을 지정함
1-1-4. 폰트 설정하기
fontdict 파라미터를 사용하면 축 레이블의 폰트 스타일을 설정할 수 있다.
plt.plot([1,2,3,4], [2,3,5,10])
plt.xlabel('X-Axis', labelpad=15, fontdict={'family':'serif', 'color':'b', 'weight':'bold', 'size':14})
plt.ylabel('Y-Axis', labelpad=20, fontdict={'family':'fantasy', 'color':'deeppink', 'weight':'normal', 'size':'xx-large'})
plt.show()
Python
복사
아래와 같이 코드를 짜는 것이 더 좋다.
font1 = {
'family': 'serif',
'color': 'b',
'weight': 'bold',
'size': 14
}
font2 = {'family': 'fantasy',
'color': 'deeppink',
'weight': 'normal',
'size': 'xx-large'
}
plt.plot([1, 2, 3, 4], [2, 3, 5, 10])
plt.xlabel('X-Axis', labelpad=15, fontdict=font1)
plt.ylabel('Y-Axis', labelpad=20, fontdict=font2)
plt.show()
Python
복사
1-1-4. 위치 설정하기
loc 파라미터는 x축 레이블 / y축 레이블의 위치를 지정해준다.
단, x축 레이블 위치와 y축 레이블 위치의 옵션 종류가 다르다.
•
x 축 레이블 위치
◦
‘left’ / ‘center’ / ‘right’
•
y축 레이블 위치
◦
‘bottom’ / ‘center’ / ‘top’
plt.plot([1, 2, 3, 4], [2, 3, 5, 10])
plt.xlabel('X-Axis', loc='right')
plt.ylabel('Y-Axis', loc='top')
plt.show()
Python
복사
1-1-5. 범례 표시하기
범례는 그래프에 데이터의 종류를 표시하기 위한 텍스트다.
legend() 함수를 사용해서 표시할 수 있다.
•
plot() 함수에 label 문자열을 지정하고
•
plt.legend() 함수를 호출하면 된다.
plt.plot([1,2,3,4], [2,3,5,10], label='Price($)')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
plt.legend()
plt.show()
Python
복사
1-2. 레이블이 있는 데이터 사용하기
# 딕셔너리 -> plt.plot
data_dict = {
'x' : [1,2,3],
'y' : [2,3,5]
}
plt.plot('x', 'y', data=data_dict) # 딕셔너리 키를 레이블로 입력해주고, data파라미터에 딕셔너리를 지정해준다.
plt.show()
Python
복사
2. pyplot 사용하기(plt)
2-1. 기본
plt.figure(figsize=(10,6)) # 그림판 크기 설정
plt.plot(x,y) # x축, y축 데이터 입력
plt.xlabel("") # x축 제목 설정
plt.ylabel("") # y축 제목 설정
plt.grid() # 격자 무늬 생성
plt.title("") # 그래프 제목 생성
plt.legend(labels=['','',...]) # 범례 표시
plt.show() # 그래프 보여줘!
plt.suptitle() # 그래프 전체 제목 지정(그래프 상단 중앙 위치)
Python
복사
선, 마크, 색깔 지정해주기
plt.plot() 안에서 설정하기
선과 점 함께 그리기
plt.scatter() : 산점도 그리기(plt.plot 대신)
데이터마다 다른 색깔로 표시하기
Series.plot(kind=’bar/barh’) : 막대그래프 그리기
사소한 Tip 들
•
; 의 여부
‘ ; ’ 을 뒤에 붙여주게 되면 불필요한 그래프의 변수명이 나오지 않게 된다. 예를들어 아래의 코드
data_result['소계'].plot(kind='barh', grid=True, figsize=(10,10))
Python
복사
의 결과는
위의 <Axes: ylabel=’구별’> 처럼 그래프의 변수명이 함께 출력된다.
만약, ‘ ; ’ 을 붙이게 되면
data_result['소계'].plot(kind='barh', grid=True, figsize=(10,10));
Python
복사
이렇게 깔끔하게 그래프만 출력된다.
텍스트 삽입해주기
•
plt.text(x 위치, y 위치 , 넣어줄 문자, fontsize)
for n in range(5):
# 상위 5개 데이터 labeling 해주기
plt.text(data_sort_f['인구수'][n] * 1.02, data_sort_f['소계'][n] * 0.98 , data_sort_f.index[n], fontsize=15)
# 하위 5개 데이터 labeling 해주기
plt.text(data_sort_t['인구수'][n] * 1.02, data_sort_t['소계'][n] * 0.98 , data_sort_t.index[n], fontsize=15)
Python
복사
사용자 지정 colormap 만들어주기
from matplotlib.colors import ListedColormap
# colormap 을 사용자 정의로 세팅
color_step = ['#e74c3c','#2ecc71','#95a9a6','#2ecc71','#3498db','#3498db']
my_cmap = ListedColormap(color_step)
Python
복사
plt.scatter(data_result['인구수'],data_result['소계'], s=50, c = data_result['오차'], cmap = my_cmap)
Python
복사
3. 여러 개의 그래프 그리기
3-1. 여러 데이터 배열 삽입
plt.plot(X, Y1, 'r--', X, Y2, 'bs', X, Y3, 'g^')
Python
복사
import matplotlib.pyplot as plt
import numpy as np
# 200ms 간격으로 균일하게 샘플된 시간
t = np.arange(0., 5., 0.2)
# 빨간 대쉬, 파란 사각형, 녹색 삼각형
plt.plot(t,t,'r--',t,t**2,'bs',t,t**3,'g^')
plt.show()
Python
복사
다양한 스타일을 갖는 여러 개의 곡선을 하나의 그래프로 나타낸다.
subplot 그려주기
plt.subplot(r,c,n) # r행 c열의 그래프 영역 중 n번째 영역
Python
복사
plt.style.use("ggplot")
plt.figure(figsize=(6,4))
plt.suptitle("white / red", fontsize=20)
## white
plt.subplot(1,2,1)
sns.barplot(x = white['quality'].value_counts().index, y = white['quality'].value_counts())
## red
plt.subplot(1,2,2)
sns.barplot(x = red['quality'].value_counts().index, y = red['quality'].value_counts())
plt.show()
Python
복사