본문 바로가기

Data Science/Data Visualization

[05. Etcetera Chart] 005. Rader Chart

728x90

방사형 그래프는 특정 대상-주요 변수의 상대적인 관계를 나타낼 때 주로 사용한다.

 

import matplotlib.pyplot as plt
import pandas as pd
from math import pi

if __name__ == '__main__':
    plt.rcParams['font.family'] = 'NanumGothic'
    df = pd.DataFrame({'group': ['A', 'B', 'C', 'D'],
                       '공격': [99, 90, 34, 55],
                       '수비': [20, 50, 84, 80],
                       '패스': [50, 60, 99, 93],
                       '슛팅': [99, 70, 88, 85],
                       '드리블': [87, 85, 75, 40],
                       })
    print(df)
    categories = list(df)[1:]
    N = len(categories)

    angles = [n / float(N) * 2 * pi for n in range(N)]
    angles += angles[:1]

    rader = plt.subplot(111, polar=True)
    rader.set_theta_offset(pi / 2)
    rader.set_theta_direction(-1)

    plt.xticks(angles[:-1], categories)

    rader.set_rlabel_position(0)
    plt.yticks([20, 40, 60, 80, 100], ['20', '40', '60', '80', '100'], color='grey', size=7)

    values = df.loc[0].drop('group').values.flatten().tolist()
    values += values[:1]
    rader.plot(angles, values, linewidth=1, linestyle='solid', label='group A')
    rader.fill(angles, values, 'b', alpha=0.1)

    values = df.loc[1].drop('group').values.flatten().tolist()
    values += values[:1]
    rader.plot(angles, values, linewidth=1, linestyle='solid', label='group B')
    rader.fill(angles, values, 'r', alpha=0.1)

    values = df.loc[2].drop('group').values.flatten().tolist()
    values += values[:1]
    rader.plot(angles, values, linewidth=1, linestyle='solid', label='group C')
    rader.fill(angles, values, 'y', alpha=0.1)

    plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1))
    plt.show()


결과 값
  group  공격  드리블  수비  슛팅  패스
0     A   99     87    20   99   50
1     B   90     85    50   70   60
2     C   34     75    84   88   99
3     D   55     40    80   85   93

 

728x90