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()

레이더차트는 각 피처별 항목별 점수를 매겨서 장점과 단점의 균형을 쉽게 알 수 있어서 유의미하게 사용될 수 있습니다
'BI > Python' 카테고리의 다른 글
[python][plotly] geojson을 이용한 지도그리기 (4) (0) | 2021.01.13 |
---|---|
[python][Mapbox] geojson을 이용한 지도그리기 (3) (12) | 2021.01.12 |
[python][지도시각화] 일본 도도부현 시각화 (0) | 2021.01.11 |
[python][folium] geojson을 이용한 지도그리기 (2) (9) | 2020.09.02 |
[python][folium] geojson을 이용한 지도그리기 (1) (7) | 2020.09.02 |