반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

<데이터 시각화 관련 글>

 

2021.07.04 - [파이썬 패키지/데이터분석] - [Python/matplotlib] 데이터 시각화 라이브러리_1편.matplotlib 소개 및 한글 폰트 깨짐 해결 방법(ft.Jupyter notebook, Colab 환경)

2021.07.05 - [파이썬 패키지/데이터분석] - [Python/matplotlib] 데이터 시각화 라이브러리_2편.matplotlib 그래프 그리기(ft. 데이터 입력, 축 이름(label), 범례(legend), 제목(title) 설정)

2021.07.06 - [파이썬 패키지/데이터분석] - [Python/matplotlib] 데이터 시각화 라이브러리_3편.matplotlib 그래프 그리기(선 색상, 종류, 마커 설정)

2021.07.09 - [파이썬 패키지/데이터분석] - [Python/matplotlib] 데이터 시각화 라이브러리_4편.눈금(Tick), 그리드(Grid) 표시하는 법

2021.07.11 - [파이썬 패키지/데이터분석] - [Python/matplotlib] 데이터 시각화 라이브러리_5편.다중 그래프 그리는 방법(ft. figure, subplot)


먼저 기본 설정을 하고 시작하겠습니다.

 

import matplotlib.pyplot as plt
import numpy as np

plt.rc('font', family='NanumBarunGothic') 
plt.rcParams["figure.figsize"] = (8, 6)

 

 

막대 그래프

: plt.bar(x, y)

 

막대 그래프를 그리는 방법은 지금까지 배운 꺾은선 그래프와 같지만 딱 하나 다릅니다. plt.plot를 plt.bar로만 바꿔주시면 됩니다.

단, plt.bar( ) 함수는 반드시 x, y축 데이터를 모두 넣어 주어야합니다. plt.plot( ) 함수 처럼 자동으로 x축 index를 만들어 주지 않고 에러를 출력하거든요.

 

당연한 이야기지만 x축 데이터와 y축 데이터의 갯수가 같아야합니다.

 

# data 생성
data_y = np.arange(1, 11)
data_x = np.arange(1, 11)

# 꺾은선 그래프 그리기
plt.subplot(2, 1, 1)
plt.plot(data_y)

# 막대 그래프 그래프
plt.subplot(2, 1, 2)
plt.bar(data_x, data_y)

# 그래프 출력
plt.show()

그래프 형태 비교(Line vs Bar)

 

막대별로 다른 색상을 넣거나, 막대의 폭, 테두리 등의 스타일 설정도 가능합니다. 여기서는 다양한 그래프를 다룰 예정이므로 자세한 내용은 글 마지막의 참고 자료를 참고해주세요.

 

참고로 label, legend, title 등은 지난 시간에 배운 내용이 똑같이 적용 가능하답니다.

 

 

 

수평 막대 그래프

: plt.barh(y, x)

 

수평 막대 그래프는 위에서 배운 막대 그래프를 90도 회전시켜서 눞혀 놓았다고 생각하시면 됩니다.

인자로 y축 데이터를 먼저 받는다는 점만 주의하시면 되겠습니다. 그 외의 기타 설정들은 위에서 설명드린 내용과 동일합니다.

 

# data 생성
data_y = np.arange(11, 21)
data_x = np.arange(1, 11)

# 수평 막대 그래프 그래프
plt.barh(data_y, data_x)

# 그래프 출력
plt.show()

 

 

파이 차트 

: plt.pie( )

 

파이 차트는 여러가지 항목의 비율(%)를 효과적으로 나타낼 수 있는 그래프입니다. 참고로 autopct라는 파라미터를 설정해주지 않으면 데이터가 그래프에 표시되지 않는답니다.

 

# ratio (모두 합쳐서 100이 되지 않으면 자동으로 전체의 합에서 각각의 비율을 나타냄)
data = [15, 30, 20, 35]

plt.pie(data, autopct='%.1f%%')

plt.show()

아주 순수 그자체의 pie 차트 -> 못써먹음

 

여기까지만 알려드리면 파이차트는 정말 쓸모가 없을 듯 하여, 옵션들을 설정해서 쓸만하게 만들어보겠습니다.

 

많은 옵션들이 있지만 labels, explodes, colors, shadow 정도면 충분할 듯 하여, 이것들만 다루었습니다.

 

ratio = [15, 30, 20, 35]

# 각 영역의 범례
labels = ['A', 'B', 'C', 'D']

# 각 영역이 중심으로부터 떨어진 거리
explode = [0.05, 0.05, 0.05, 0.05]

# 각 영역의 색상
colors = ['lightpink', 'lightyellow', 'lightgreen', 'lightskyblue']

plt.pie(ratio, autopct='%.1f%%', labels=labels, explode=explode, colors=colors, shadow=True)

plt.show()

 

산점도 그래프

: plt.scatter( )

 

산점도 그래프는 데이터들이 얼마나 분포해 있는지, 그 값의 크기는 어느정도인지를 한 눈에 볼 수 있도록 표현한 그래프입니다.

 

# 0~1 사이의 실수를 무작위으로 50개 생성 (x, y 좌표로 활용)
x = np.random.rand(50)
y = np.random.rand(50)

# 각 점들의 색상 부여를 위한 Array 생성 (데이터와 동일한 50개 필요)
colors = np.arange(50)

# 각 점들의 면적을 부여해서 다양한 점의 면적 표현
area = x * y * 2000

# 0~1 사이의 투명도를 설정하여 점이 겹쳤을 때를 더 예쁘게 표현 가능
alpha= 0.5

# 산점도 그래프 그리기 (여기서 cmap은 matplotlib에 정의된 컬러 조합임)
plt.scatter(x, y, s=area, c=colors, alpha=alpha, cmap='hsv')

# 산점도 그래프 우측에 컬러가 무엇을 뜻하는지 컬러바 표현
plt.colorbar()

# 그래프 출력
plt.show()

 

 

c(color)나 s(area), alpha, colorbar( )와 같은 설정을 해주지 않으면 아래와 같이 허접한(?) 산점도 그래프를 얻을 수 있습니다.

 

위에서 같이 예쁜 컬러를 얻기 위해서는 cmap 설정을 할 수 있으며, 그 양이 방대해서 참고 자료로 대체하도록 하겠습니다. 원하는 컬러맵을 골라서 사용하시면 되겠습니다.

 

https://codetorial.net/matplotlib/set_colormap.html

 

Matplotlib 컬러맵 설정하기 - Codetorial

예제 import matplotlib.pyplot as plt import numpy as np np.random.seed(0) arr = np.random.standard_normal((8, 100)) plt.subplot(2, 2, 1) # plt.scatter(arr[0], arr[1], c=arr[1], cmap='spring') plt.scatter(arr[0], arr[1], c=arr[1]) plt.spring() plt.title('

codetorial.net

 


<참고 자료>

 

1. 직장인을 위한 파이썬 데이터분석 올인원 패키지 Online_패스트 캠퍼스 유료강의

 

2. Codetorial_Matplotlib 산점도 그리기

https://codetorial.net/matplotlib/scatter_plot.html

반응형

+ Recent posts