마커 속성을 다변량 데이터에 매핑하기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 Python 의 Matplotlib 라이브러리를 사용하여 마커의 다양한 속성을 활용하여 다변량 데이터 세트를 플로팅하는 방법을 배우게 됩니다. 특히, 성공적인 야구 투구를 마커 크기를 투구자의 기술에, 마커 회전을 이륙 각도에, 추력을 마커 색상에 매핑하여 스마일리 페이스로 표현하는 방법을 배우게 됩니다.

VM 팁

VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접속하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 임포트

이 단계에서는 이 랩에 필요한 라이브러리를 임포트합니다. 특히, Matplotlib, Numpy, 그리고 Matplotlib의 다양한 모듈, 예를 들어 MarkerStyle, TextPath, Affine2D 등을 임포트합니다.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.colors import Normalize
from matplotlib.markers import MarkerStyle
from matplotlib.text import TextPath
from matplotlib.transforms import Affine2D

성공 기호 정의

이 단계에서는 야구 투구의 성공을 나타내는 세 가지 성공 기호를 정의합니다. 구체적으로, 성공적인 투구에 대한 스마일리 페이스, 부분적으로 성공적인 투구에 대한 중립적인 얼굴, 그리고 실패한 투구에 대한 슬픈 얼굴을 정의합니다.

SUCCESS_SYMBOLS = [
    TextPath((0, 0), "☹"),
    TextPath((0, 0), "😒"),
    TextPath((0, 0), "☺"),
]

랜덤 데이터 생성

이 단계에서는 투구자의 기술, 이륙 각도, 추력, 성공 여부 및 위치에 대한 랜덤 데이터를 생성합니다. 구체적으로, 각 변수에 대해 25 개의 데이터 포인트를 생성하며, 위치의 경우 각 데이터 포인트마다 2 개의 좌표가 있습니다.

N = 25
np.random.seed(42)
skills = np.random.uniform(5, 80, size=N) * 0.1 + 5
takeoff_angles = np.random.normal(0, 90, N)
thrusts = np.random.uniform(size=N)
successful = np.random.randint(0, 3, size=N)
positions = np.random.normal(size=(N, 2)) * 5
data = zip(skills, takeoff_angles, thrusts, successful, positions)

컬러 맵 정의

이 단계에서는 투구의 추력을 마커의 색상에 매핑하는 데 사용될 컬러 맵을 정의합니다. 구체적으로, Matplotlib 의 "plasma" 컬러 맵을 사용합니다.

cmap = plt.colormaps["plasma"]

플롯 생성

이 단계에서는 앞서 생성된 랜덤 데이터를 사용하여 플롯을 생성합니다. 구체적으로, 각 데이터 포인트를 성공 변수에 의해 결정되는 성공 기호, 기술 변수에 의해 결정되는 크기, 이륙 각도 변수에 의해 결정되는 회전, 그리고 추력 변수에 의해 결정되는 색상을 가진 마커로 플롯합니다.

fig, ax = plt.subplots()
fig.suptitle("Throwing success", size=14)
for skill, takeoff, thrust, mood, pos in data:
    t = Affine2D().scale(skill).rotate_deg(takeoff)
    m = MarkerStyle(SUCCESS_SYMBOLS[mood], transform=t)
    ax.plot(pos[0], pos[1], marker=m, color=cmap(thrust))
fig.colorbar(plt.cm.ScalarMappable(norm=Normalize(0, 1), cmap=cmap),
             ax=ax, label="Normalized Thrust [a.u.]")
ax.set_xlabel("X position [m]")
ax.set_ylabel("Y position [m]")

플롯 표시

이 단계에서는 Matplotlib 의 show() 함수를 사용하여 플롯을 표시합니다.

plt.show()

요약

이 랩에서는 Python 의 Matplotlib 라이브러리를 사용하여 마커의 다양한 속성을 활용하여 다변량 데이터셋을 플롯하는 방법을 배웠습니다. 구체적으로, 성공적인 야구 투구를 투구자의 기술에 매핑된 마커 크기, 이륙 각도에 매핑된 마커 회전, 그리고 마커 색상에 매핑된 추력을 가진 스마일리 페이스로 표현하는 방법을 배웠습니다. 이 랩에 설명된 단계를 따르면, 여러분의 다변량 데이터셋에 대해 유사한 플롯을 생성할 수 있습니다.