Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Matplotlib로 레이더(거미) 차트 그리는 방법 – 단계별 완벽 가이드

Python의 Matplotlib 라이브러리를 활용하면 다각형 형태의 레이더(거미) 차트를 손쉽게 만들 수 있습니다. 이 글에서는 극좌표(polar) 축을 사용해 스포츠 능력치 데이터를 시각화하는 전체 과정을 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.

  • sports(종목)와 values(값) 두 개의 열을 가진 Pandas 데이터프레임을 생성합니다.

  • 새 그림을 생성하거나 기존 그림을 활성화합니다.

  • 서브플롯 배치의 일부로 그림에 'ax'(극좌표 축 객체)를 추가합니다.

  • 데이터프레임 값에 기반하여 각도(theta) 값을 계산합니다.

  • 데이터프레임의 값 리스트를 가져옵니다.

  • theta와 values 데이터 포인트로 선 그래프를 그려 다각형의 테두리를 만듭니다.

  • fill() 메서드로 다각형 내부 영역을 반투명하게 채웁니다.

  • show() 메서드를 사용해 최종 그림을 화면에 표시합니다.

예제 코드

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

df = pd.DataFrame({'sports': ['Strength', 'Speed', 'Power', 'Agility', 'Endurance', 'Analytical Aptitude'], 'values': [7, 8, 6, 10, 8, 9]})

fig = plt.figure()

ax = fig.add_subplot(111, projection="polar")

theta = np.arange(len(df) + 1) / float(len(df)) * 2 * np.pi

values = df['values'].values
values = np.append(values, values[0])

l1, = ax.plot(theta, values, color="purple", marker="o", label="Name of values")

ax.tick_params(pad=10)
ax.fill(theta, values, 'green', alpha=0.3)

plt.show()

코드 핵심 포인트

여기서 중요한 부분은 theta 값의 계산입니다. np.arange(len(df) + 1)를 사용해 데이터 개수보다 하나 더 많은 각도를 생성하고, 이를 2 * np.pi(360도)에 비율에 맞게 곱합니다. 마지막 지점을 첫 번째 값으로 되돌리기 위해 np.append(values, values[0])로 첫 값을 끝에 추가하는데, 이렇게 해야 다각형이 닫힌 형태로 완성됩니다.

실행 결과

위 코드를 실행하면 여섯 개 종목(근력, 속도, 파워, 민첩성, 지구력, 분석력)의 능력치가 닫힌 다각형 형태로 표현된 레이더 차트가 생성됩니다. 보라색 선과 원형 마커가 각 항목의 값을 나타내고, 초록색 반투명 영역(alpha=0.3)이 다각형 내부를 채워 데이터를 한눈에 파악하기 쉽게 만들어 줍니다.

Python Matplotlib로 레이더(거미) 차트 그리는 방법 – 단계별 완벽 가이드