[스파르타코딩클럽]데이터분석 과정/PYTHON

[python][matplotlib](1) 시각화 기초 세팅

doo_ 2024. 1. 20. 15:30

[참고] 파이썬으로 데이터 시각화하기 (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()