Python/Matplotlib

[Matplotlib] 파이썬 plt 버블 차트(Bubble plot) 예제

jimmy_AI 2021. 11. 28. 16:08
반응형

이번 글에서는 matplotlib의 산점도 함수인 plt.scatter 함수를 통하여 버블 차트를 그리는 방법을 알아보도록 하겠습니다. 참고로, 버블 차트는 쉽게 말하자면 산점도에서 각 점마다 크기가 달라 더 많은 정보를 한 그림 내에 담을 수 있는 시각화 자료를 말합니다. 다만, 한 그림 내에 정보가 많아지면 다소 번잡해질 수 있다는 점은 주의해주세요!

 

파이썬 버블 차트 기본형 : x와 y축이 모두 숫자형

우선, 기본형 버블차트인 x축과 y축이 모두 숫자형 자료인 경우를 예시로 들어보겠습니다.

 

데이터셋은 kaggle의 자전거 대여 수요 예측 학습 데이터 셋 중 가장 앞의 1000개 row를 사용하였습니다.

 

먼저, 온도와 습도에 대해 자전거 대여 수의 관계를 알아보겠습니다.

x축은 온도, y축은 습도, 원의 크기는 자전거 대여 수로 지정해보겠습니다.

import matplotlib.pyplot as plt

plt.figure(figsize=(10,6))

plt.scatter(df['temp'], # x축
            df['humidity'], # y축
            s = df['count'], # 사이즈
            c = 'green', # 색깔(고정)
            alpha = 0.5) # 투명도

plt.xlabel('temp', size = 12)
plt.ylabel('humidity', size = 12)
plt.title('bike sharing bubble chart', size = 15)
plt.show()

plt.scatter 함수에서 x축, y축과 size에 해당하는 변수 인자를 데이터프레임 column을 매칭시켜주면 버블 차트를 그려볼 수 있습니다.

습도가 낮은 경우 대여 수가 많았고, 온도가 너무 낮은 날은 대여수가 적다라는 정도의 관계는 어느 정도 확인이 가능한 듯 합니다.

 

 

이번에는 풍속의 영향도 보기 위해서 풍속 정보는 색깔로 지정하여 결과를 확인해보겠습니다.

plt.figure(figsize=(10,6))

plt.scatter(df['temp'], # x축
            df['humidity'], # y축
            c = df['windspeed'], # 색깔(숫자에 따라 변화)
            s = df['count'], # 사이즈
            alpha = 0.5, # 투명도
            cmap = 'seismic') # 컬러바 종류

plt.colorbar()
plt.xlabel('temp', size = 12)
plt.ylabel('humidity', size = 12)
plt.title('bike sharing bubble chart', size = 15)
plt.show()

위의 그래프에서 각 점마다의 색상이 windspeed 정보와 매칭된다는 것을 확인하실 수 있습니다!

이렇게 되면 위의 그래프보다 담고 있는 정보는 많지만, 정보를 확인하기가 더 번잡하다는 단점이 있습니다.

반응형

이썬 plt 버블 차트 : y축이 범주형인 경우

이번에는 y축에 범주형 자료를 넣고, x축에 숫자형 자료를 넣어 버블 차트를 확인해보도록 하겠습니다.

 

x축에는 온도를 그대로 넣은 대신, y축에는 시간대 정보라는 범주형 자료를 넣어보겠습니다.

plt.figure(figsize=(10,6))

plt.scatter(df['temp'], # x축
            df['hours'], # y축(범주형 자료)
            s = df['count'] * 3, # 사이즈
            c = 'pink', # 색깔(고정)
            alpha = 0.5) # 투명도

plt.xlabel('temp', size = 12)
plt.ylabel('hours', size = 12)
plt.title('bike sharing bubble chart', size = 15)
plt.show()

0~2, 3~5, 21~23 시의 시간대에는 대여량이 확연히 적은 것을 바로 한눈에 알 수 있습니다!

 

물론, x축이 범주형인 경우도 위와 마찬가지로 적용이 가능합니다.

 

x축과 y축이 모두 범주형 자료인 경우도 버블 차트를 그리는 것이 가능하기는 하나, 이 경우는 각 범주마다 원들이 한 점에 겹치므로, 평균 등의 정보를 구해준 뒤 적용해주는 것이 좋고, 사실 이 경우에는 히트맵이 더 적절한 형태의 시각화 자료가 됩니다.

 

이상으로 파이썬 matplotlib에서 산점도 함수를 이용하여 bubble plot을 그리는 방법을 살펴보았습니다.