Matplotlib에서 극좌표(polar) 축 위에 산점도(scatter plot)를 그리는 방법을 단계별로 알아보겠습니다. 극좌표 산점도는 각도와 반지름 기반의 데이터를 시각화할 때 특히 유용하며, 레이더 차트나 방향성 데이터 분석에 자주 활용됩니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- 샘플 데이터의 개수를 나타내는 변수 N을 초기화합니다.
- NumPy를 사용하여 r(반지름), theta(각도), area(면적), colors(색상) 데이터를 생성합니다.
- 새로운 그림을 생성하거나 기존 그림을 활성화합니다.
add_subplot(projection='polar')로 극좌표 축을 만든 후, scatter() 메서드를 사용해 theta, r, colors, area 값을 플로팅합니다.- show() 메서드를 호출하여 그림을 화면에 표시합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True N = 150 r = 2 * np.random.rand(N) theta = 2 * np.pi * np.random.rand(N) area = 200 * r**2 colors = theta fig = plt.figure() ax = fig.add_subplot(projection='polar') c = ax.scatter(theta, r, c=colors, s=area, cmap='hsv', alpha=0.75) plt.show()
코드 설명
위 코드의 핵심 요소를 살펴보겠습니다.
- r: 0부터 2 사이의 무작위 반지름 값 150개를 생성합니다.
- theta: 0부터 2π(360도) 사이의 무작위 각도 값을 생성합니다.
- area: 반지름의 제곱에 비례하는 크기로, 점의 크기가 중심에서 멀어질수록 커지게 됩니다.
- colors: 각도 값을 색상으로 매핑하여
cmap='hsv'색상 맵을 통해 무지개처럼 표현됩니다. - alpha=0.75: 점들을 75% 불투명도로 설정해 겹치는 영역을 자연스럽게 보여줍니다.
실행 결과
코드를 실행하면 원형 극좌표 평면 위에 크기와 색상이 다양한 150개의 산점도 점이 표시됩니다. 각 점의 위치는 (각도, 반지름) 좌표로 결정되며, HSV 색상 맵 덕분에 각도에 따라 색이 부드럽게 변화하는 시각적으로 아름다운 결과물을 얻을 수 있습니다.
이 기법은 바람의 방향과 세기, 소음의 방향성 분포 등 각도 기반 데이터를 직관적으로 표현해야 하는 다양한 분야에 응용할 수 있습니다.