데이터 시각화
데이터의 분석 결과를 쉽게 이해하고 판단할 수 있도록 데이터를 시각적으로 표현하여 전달하기 위한 과정을 말한다.
많은 양의 데이터를 한눈에 파악할 수 있다. 누구나 데이터를 인지하고 활용할 수 있다.
숫자를 보여주면 숫자를 다루던 사람들은 알지만, 모르는 사람들은 알기 어렵다.
그러나 자유도는 높지만 진입장벽이 있다.
대표적인 시각화 라이브러리
matplotlib: 가장 기본이 되는 라이브러리. 함수들이 내부적으로는 matplotlib을 사용한다.
seaborn
pandas
plotly : matplotlib을 사용하지 않고 자바스크립트를 사용 (웹에서 볼수 있도록 한다.)
folium: 지도 시각화.
matplotlib
: 데이터 시각화를 위한 파이썬 패키지. 2차원 그래프를 주로 그린다. (2차원그래프는 2가지 종류의 값을 가지고 그래프를 그린다.)
장점)
-파이썬을 이용해서 만들었기 때문에 동작하는 OS를 가리지 않는다.
-MATLAB과 유사한 사용자 인터페이스를 가진다.
-그래프에 대한 상세한 설정을 할 수 있다. (눈금까지도 설정할수 있다. seaborn은 알아서 설정이 되어서 편하긴하다.)
-다양한 출력 형식으로 저장할 수 있다.
matplotlib 그래프 구성요소
figure
전체 그래프가 위치할 기본 틀. 하나의 figure에 여러개의 그래프를 그릴 수 있다.
axes(subplot)
figure내에 한개의 그래프를 그리기 위한 공간
figure에 한개 이상의 axes(subplot)로 구성해서 각 axes에 그래프를 그린다.
axis :축 (x축, y축)은 값들을 위치시키는 선을 말한다.
axis label (x, y) : 축의 레이블(설명)
ticks : 축의 값을 알려주는 눈금
Major tick
Minor tick
title : 플롯 제목
legend (범례) : 하나의 axes내에 여러 그래프를 그린 경우 그것에 대한 설명
spine :축의 경계
pyplot 모듈을 이용해 그리기
pyplot은 matplotlib library의 서브모듈이다.
예제)
#그래프에 사용할 데이터
x = [1,2,3,4,5] #x축
y = [10,20,30,40,50] #y축
import matplotlib.pyplot as plt
# 그래프 그리기. plt모듈의 함수이용.
plt.plot(x,y)
#그래프에 대한 설정
plt.title("Lineplot 예제") #제목
#x, y축의 라벨
plt.xlabel("x값")
plt.ylabel("y값")
plt.grid(True)
#눈금(ticks) 설정
plt.xticks(ticks=range(0,10), #눈금의 위치
labels=list("ABCDEFGHIJ") #각 눈금의 label지정. ticks와 labels의 개수는 같아야함.
)
#y축 눈금
plt.yticks(ticks=range(10,51,5))
#그래프를 출력
plt.show()
show() 라는 함수가 나오면 그때 그래프가 보여진다. jupyter notebook에서는 show없어도 나오긴하지만 항상 show를 넣어준다.
** 화면에 뿌리는 것을 rendering이라고 하는데, 그때그때 하는게 아니라 show할때 뿌리는 것이기때문에
지연랜더링, lazy rendering 이라고 한다.
하나의 figure에 여러 그래프 그리기
plt.subplot(1, 2, 1) : figure를 1행 2열로 나눈다. 그 중 1번(첫번째) subplot에 그리겠다.
Figure와 Axes 객체를 이용해 그리기
AxesSubplot 객체(Axes를 표현하는 객체)의 메소드들을 이용해 그래프를 그린다.
하나의 figure에 하나의 Axes 만 사용할 경우 사용.
plt.gca()
하나의 figure에 여러개의 Axes들을 사용할 경우
figure.add_subplot() : figure를 먼저 생성후 axes 들을 추가
pyplot.subplots() : figure와 axes배열을 동시에 생성
Figure에 하나의 axes 그리기
plt.gca() 사용
axes = plt.gca()
print(type(axes))
axes.plot(x, y)
#설정
axes.set_title("제목") #plt.title("제목")
axes.set_xticks(ticks=[1,1.5,2,2.5,3,3.5,4,4.5,5])#plt.xticks()
axes.set_xlabel("x축 라벨") #plt.xlabel("x라벨")
axes.set_ylabel("y축 라벨")
#set은 속성을 바꾸는 것
axes.grid(True)
plt.show()
하나의 Figure에 여러개의 axes 그리기
figure.add_subplot()
:figure객체에 axes를 추가하는 형태
원하는 위치로 조정가능하다.
#figure 객체 생성
fig = plt.figure()
print(type(fig))
axes1 = fig.add_subplot(2,2,1) #2 x 2의 첫번째 위치. 추가한 axes객체를 반환
axes1.plot(x,y)
axes1.set_title("1번 axes")
axes2 = fig.add_subplot(2,2,3)
axes2.plot(y,x)
axes2.set_title("2번 axes")
axes3 = fig.add_subplot(1,2,2)
axes3.bar(['A','B'],[10,20])
axes3.set_title("3번 axes")
plt.tight_layout()
plt.show()
pyplot.subplots()
: 미리 나눠놓고 한다.
#ndarray: 넘파이의 자료구조. 배열
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2,2, figsize=(10,10))
print(type(fig))
print(type(axes), axes.shape)
axes[0,0].plot(x,y)
axes[0,1].plot(y,x)
axes[1,0].plot(x,y[::-1])
axes[1,1].plot(x,x)
plt.show
axes[0,0] : axes를 묶은 모양
색상과 스타일
: color 또는 c 매개변수를 이용해 지정, 색상이름으로 지정. (색이름 또는 약자로 지정 가능 ex.'red', 'r')
HTML Color Hex code
#으로 시작하며 RGB의 성분을 16진수로 표현. #은 칼라코드이다.
0 ~ 1 사이 실수로 흰식과 검정색 사이의 회색조를 표시한다.
0: 검정, 1: 흰색
헥스(HEX)는 16진수를 뜻하는 단어. 숫자는 두 자리씩 끊어서 각각 'R', 'G', 'B'를 나타내며, 16진수로 표현되어 00(=0 10)일 때 가장 어둡고 FF(=255 10)일 때 가장 밝다.
ex. R G B
#00 00 00 = 검정
#FF FF FF = 흰색(다 농도가 차있기때문)
style
: 그래프의 여러 시각효과들을 미리 설정해 놓은 것
matplotlib는 다양한 스타일들을 미리 정의해 놓고 있다.
그리드를 넣을지말지 등 시각효과를 미리 설정해 놓은것. 제일 먼저 해놓는 것. 어떤 스타일로 할지 미리 셋팅을 해놓는다.
plt.style.use() :함수 이용해 지정
plt.style.available :사용할 수 있는 스타일 이름 조회
import matplotlib.pyplot as plt
import numpy as np
plt.style.use("default")
x = np.linspace(1,10, num = 100) #1~100범위를 100등분했을때 분위수가 가지는 배열
plt.plot(x,x+3)
plt.plot(x,x+2)
plt.plot(x,x)
plt.plot(x,x-1)
plt.show()
'데이터 분석일기 > pandas' 카테고리의 다른 글
DataFrame_재구조화 (0) | 2023.09.20 |
---|