マーカーのプロパティを多変量データにマッピングする

PythonPythonBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、PythonのMatplotlibライブラリを使って、マーカーのさまざまなプロパティを使って多変量データセットをプロットする方法を学びます。具体的には、成功した野球の投げを、マーカーのサイズを投手の技術に、マーカーの回転を離陸角度に、そして推力をマーカーの色にマッピングしたスマイリーフェイスとして表現する方法を学びます。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替えて、Jupyter Notebookを使って練習します。

時々、Jupyter Notebookが読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebookの制限により、操作の検証は自動化できません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリのインポート

このステップでは、この実験に必要なライブラリをインポートします。具体的には、MatplotlibNumpy、およびMatplotlibからのさまざまなモジュール(MarkerStyleTextPathAffine2Dなど)をインポートします。

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

成功シンボルの定義

このステップでは、野球の投げの成功を表すために使用される3つの成功シンボルを定義します。具体的には、成功した投げにはスマイリーフェイス、部分的に成功した投げにはニュートラルな表情、失敗した投げには悲しい表情を定義します。

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ライブラリを使ってマーカーのさまざまなプロパティを使って多変量データセットをプロットする方法を学びました。具体的には、成功した野球の投げを、マーカーのサイズを投手の技術にマッピングし、マーカーの回転を離陸角度に、推力をマーカーの色にマッピングしたスマイリーフェイスとして表現する方法を学びました。この実験で示されている手順に従えば、自分の多変量データセットに対して同様のグラフを作成することができます。