[python][matplotlib](1) 시각화 기초 세팅
[참고] 파이썬으로 데이터 시각화하기 (1장~15장)
> 라이브러리 불러오기
import matplotlib.pyplot as plt
> 글자 깨짐 방지
plt.rcParams['font.family'] = 'Malgun Gothic'
> x, y값 불러오기
x_values = [1, 2, 3, 4]
y_values = [1, 4, 9, 16]
> 그래프 프레임 크기 설정
plt.figure(figsize=(6,6))
> 그래프 정하기
- plt.plot(x, y, 'bo-', label = '이름')
- color적용 'r' or color = 'red'
- marker표시 'o' or marker = 'o'
- style표현 '-' or linestyle = 'solid'
[ 다양한 선, 색, 마커 종류 정리는 : here ] < 정리중
- linewidth 선 두께
plt.plot(x, y, 'ro', label = 'line')
> x, y 범위 설정
- plt.axis([xmin, xmax, ymin, ymax])
plt.axis([0, 6, 0, 20])
> x, y축 label 붙이기
- plt.xlabel('제목', fontdict = {--}, labelpad = 00)
- x-loc : right, center, left
- y-loc : bottom, center, top
plt.xlabel('X-Label', loc = 'right', fontdict = {'family': 'serif','color': 'b','weight': 'bold','size': 14})
plt.ylabel('Y-Label', loc = 'center', fontdict = {'family': 'fantasy','color': 'deeppink','weight': 'normal','size': 'xx-large'})
> 범위 지정
- X축의 범위: [xmin, xmax] # Y축의 범위: [ymin, ymax]
- 또는 plt.axis((xmin,xmax,ymin,ymax))
- axis ('on' | 'off' | 'equal' | 'scaled' | 'tight' | 'auto' | 'normal' | 'image' | 'square') 함수
plt.xlim([0, 5])
plt.ylim([0, 20])
> 축 스케일 지정하기
- xscale(), yscale() : 'linear'(기본), ‘log’, ‘symlog’, ‘logit’
> 축 간격 구분
- xticks(), yticks()
- 문자를 배정하고 싶다면 ()안에 ,label = [ ] 대입
plt.xticks([0,2,4])
plt.yticks([1,4,9,16], labels = ['1','2^2','3^3','4^4'])
> 축 스타일 설정
plt.tick_params(axis='x', direction='in', length=3, pad=6, labelsize=14, labelcolor='green', top=True)
plt.tick_params(axis='y', direction='inout', length=10, pad=15, labelsize=12, width=2, color='r')
> 그래프 영역 채우기
- 선 그래프 x축 기준 : fill_betwee(x값, y값)
- 선 그래프 y축 기준 : fill_betweenx(y값, x값)
- 선 그래프 사이 영역 채우기 : fill_between(x값, y1값, y2값)
- 선 그래프 범위 영역 채우기 : fill_between(x_array, y_array)
- alpha = 투명도(transparency)
plt.fill_between(x[1:3], y[1:3], alpha=0.5)
> 수평선 그리기
- axhline(y, min x비율, max x비율, ---) _ 비율은 0<x<1
- hlines(y,min x값, max x값, ---)
plt.axhline(5, 0.1, 0.6, color='lightblue', linestyle='--', linewidth=2)
plt.hlines(3, 1.0, 2.5, color='blue', linestyle='solid', linewidth=3)
>수평선 그리기
- axvline(x값, min y비율, max y비율)
- vline(x값, min y값, max y값)
plt.axvline(1.7, 0, 0.17, color='lightgray', linestyle='--', linewidth=2)
plt.vlines(2.2, 0, 5.0, color='gray', linestyle='solid', linewidth=3)
> 그래프에 텍스트 쓰기
plt.text(1.7, 4.8, 'here', fontdict={'size': 14})
> 범례 표시 - 그래프 이름 표시
- loc = 위치
- ncol = 개수 나열
- frameon / shadow 등
plt.legend(loc = 'upper center', bbox_to_anchor=(0.5, 1.1),ncol=5, fontsize = 10, frameon=True, shadow=True)
> 그래프 그리그 그리기
- axis : 'both'(기본값), 'x', 'y'
plt.grid(True, axis = 'both')
> 타이틀 설정
- loc : 위치
- pad : 축과의 거리
plt.title('Graph Title', loc='center', pad=10, fontdict = {'fontsize': 16,'fontweight': 'bold'})
> 그래프 스타일
- style.use() : 'default', ‘bmh’, ‘ggplot’, ‘classic’, ‘Solarize_Light2’가 있음
plt.style.use('ggplot')
> 그래프 출력
plt.show()
> if. 그래프 저장하기
plt.savefig('savefig_default.png')
<코드 전체는 아래 더보기>
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y, 'ro-', label = 'line')
plt.axis([0, 6, 0, 20])
plt.xlabel('X-Label', loc = 'right', fontdict = {'family': 'serif','color': 'b','weight': 'bold','size': 14})
plt.ylabel('Y-Label', loc = 'center', fontdict = {'family': 'fantasy','color': 'deeppink','weight': 'normal','size': 'xx-large'})
plt.xlim([0, 6])
plt.ylim([0, 20])
plt.xticks([0,2,4,6])
plt.yticks([1,4,9,16], labels = ['1','2^2','3^3','4^4'])
plt.tick_params(axis='x', direction='in', length=5, pad=7, labelsize=14, labelcolor='green', top=True)
plt.tick_params(axis='y', direction='inout', length=10, pad=15, labelsize=12, width=2, color='r')
plt.fill_between(x[1:3], y[1:3], alpha=0.5)
plt.axhline(5, 0.0, 0.36, color='lightblue', linestyle='--', linewidth=2)
plt.hlines(3, 0, 1.7, color='blue', linestyle='solid', linewidth=3)
plt.axvline(1.7, 0, 0.17, color='lightgray', linestyle='--', linewidth=2)
plt.vlines(2.2, 0, 5.0, color='gray', linestyle='solid', linewidth=3)
plt.legend(loc = 'upper center', bbox_to_anchor=(0.5, 1),ncol=5, fontsize = 10, frameon=True, shadow=True)
plt.grid(True)
plt.title('Graph Title', loc='center', pad=10, fontdict = {'fontsize': 16,'fontweight': 'bold'})
plt.style.use('ggplot')
plt.show()