본문 바로가기
데이터 분석/시각화

[히스토그램(Histogram)] 2. Matplotlib을 이용하여 히스토그램 여러개 그리기.

by 부자 꽁냥이 2021. 1. 15.

안녕하세요~ 꽁냥이에요.

이번 포스팅에서는 Matplotlib을 이용하여 히스토그램을 여러개 그려보는 방법에 대해서 알아보겠습니다. 히스토그램을 그리는 기본적인 방법과 꾸미는 방법은 여기를 참고하세요. 

 

여기서 다루는 내용은 다음과 같습니다.

 

1. 히스토그램 여러개 그리기

2. 스택 히스토그램 그리기


   1. 히스토그램 여러개 그리기

히스토그램을 여러개 그리는 방법은 쉽습니다. 히스토그램을 그리고자하는 개수 만큼 hist를 호출하면 됩니다. 아래 코드를 살펴보겠습니다.

 

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)

## 두개의 데이터 생성
mu, sigma = 5, 1
x = mu + sigma * np.random.randn(100)
mu_y, sigma_y = 10, 1.5
y = mu_y + sigma_y * np.random.randn(100)

fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')

plt.hist(x, 10, density=True, color='g', alpha=0.75, edgecolor='k')
plt.hist(y, 10, density=True, color='b', alpha=0.75, edgecolor='k')

plt.title('Histogram')
plt.show()

 

line 7~10

numpy를 이용하여 랜덤 샘플의 배열(x, y)을 두개 생성합니다.

 

line 15~16

배열이 두개가 있어서 히스토그램을 2개 그릴 것입니다. 따라서 hist를 두번 사용했습니다. 이때 y축에는 비율을 나타내기 위해 density=True 로 지정하였습니다. 여러 히스토그램을 하나의 캔버스에 그릴때에는 y축을 비율로 설정하는 것이 비교를 위해서 좋습니다. 이외에도 투명도(alpha)와 테두리 색상(edgecolor)도 지정하였습니다.

 

위 코드를 실행하면 아래와 같이 히스토그램 2개가 겹쳐서 나타나게 됩니다.

 


   2. 스택 히스토그램(Stacked Histogram) 그리기

이번엔 스택 히스토그램을 그리는 방법에 대해서 알아보겠습니다. 쉽습니다.

 

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)

## 두개의 데이터 생성
mu, sigma = 5, 1
x = mu + sigma * np.random.randn(100)
mu_y, sigma_y = 10, 1.5
y = mu_y + sigma_y * np.random.randn(100)

fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')

plt.hist([x,y], 20, 
         density=True, 
         color=['g','b'], 
         histtype='barstacked', 
         alpha=0.75, 
         edgecolor='k')

plt.title('Histogram')
plt.show()

 

line 15~20

스택 히스토그램을 그릴 데이터를 하나의 리스트에 담아서 hist의 첫번째 인자로 넘겨줍니다. 여기서 주의하실 점은 색상을 지정할 때 데이터 리스트의 길이와 똑같은 길이의 색상 리스트를 지정해야한다는 것입니다. 색상을 따로 지정하지 않으면 hist가 알아서 데이터 배열의 개수만큼 색상을 지정해줍니다.

 

위 코드를 실행하면 아래와 같이 스택 히스토그램이 잘 그려진 것을 확인할 수 있습니다.

 


이번 포스팅에서는 히스토그램을 여러개 겹쳐그리는 방법에 대하여 알아보았습니다. 지금까지 꽁냥이의 글 읽어주셔서 감사합니다. 다음에도 좋은 내용으로 찾아뵙겠습니다. 안녕히계세요~

 


댓글


맨 위로