융무의 기술블로그
article thumbnail
Published 2020. 9. 23. 00:38
[python] 레이더차트 시각화 BI/Python

python을 이용해서 간단한 레이더차트 시각화를 해보겠습니다. 먼저 가상의 데이터를 데이터 프레임 형태로 만들어줍니다.

<python />
import numpy as np import pandas as pd import matplotlib.pyplot as plt from math import pi plt.rcParams["font.family"] = 'Malgun Gothic' plt.rcParams["font.size"] = 15 df = pd.DataFrame({'시군구': ['서울','광주','부산','울산'], '관광': [2, 5, 4, 3], '환경': [2, 1, 3, 5], '의료/복지/교육': [5, 3, 3, 4], '안전': [4, 3, 2, 1], '주거': [2, 3, 5, 3]}, columns=['시군구', '관광', '환경', '의료/복지/교육', '안전', '주거']) df

해당 인덱스에 있는 시군구 한 곳인 서울에 대해서 레이더차트를 그리고 각 피처들을 비교해보겠습니다.

<python />
categories = list(df)[1:] val_c1 = df.loc[0].drop('시군구').values.flatten().tolist() val_c1 += val_c1[:1] angles = [n / float(len(categories)) * 2 * pi for n in range(len(categories))] angles += angles[:1]
<python />
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(8, 8), subplot_kw=dict(polar=True)) plt.title(df['시군구'][0]) plt.xticks(angles[:-1], categories, color='grey', size=12) plt.yticks(np.arange(1, 6), ['1', '2', '3', '4', '5'], color='grey', size=12) plt.ylim(0, 5) ax.set_rlabel_position(30) ax.plot(angles, val_c1, linewidth=1, linestyle='solid', label='Client c1') ax.fill(angles, val_c1, 'skyblue', alpha=0.4)

레이더차트에 서울과 울산을 그려 속성들을 비교해보겠습니다.

<python />
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(8, 8), subplot_kw=dict(polar=True)) plt.xticks(angles[:-1], categories, color='grey', size=12) plt.yticks(np.arange(1, 6), ['1', '2', '3', '4', '5'], color='grey', size=12) plt.ylim(0, 5) ax.set_rlabel_position(30) # part 1 val_c1 = df.loc[0].drop('시군구').values.flatten().tolist() val_c1 += val_c1[:1] ax.plot(angles, val_c1, linewidth=1, linestyle='solid', label='서울') ax.fill(angles, val_c1, 'skyblue', alpha=0.4) # part 2 val_c2=df.loc[3].drop('시군구').values.flatten().tolist() val_c2 += val_c2[:1] ax.plot(angles, val_c2, linewidth=1, linestyle='solid', label='울산') ax.fill(angles, val_c2, 'lightpink', alpha=0.4) plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1)) plt.show()

레이더차트는 각 피처별 항목별 점수를 매겨서 장점과 단점의 균형을 쉽게 알 수 있어서 유의미하게 사용될 수 있습니다

profile

융무의 기술블로그

@융무

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!