Tableauによる変則的なレーダーチャートの作り方
先日のmake ove mondayでメジャーリーグの投手の変化球が過去と比べてどのように変化したのかを可視化するお題がありました。csvのテーブルの形でデータが与えられているので、そのままシンプルに考えるのであれば、折れ線グラフなどですが、いかんせん、変化球の名前が英語でそもそもどのような傾向にあるのかが、英語が分かり、かつ野球の変化球が分かる人しか理解できないようなグラフになりました。。。
どれだけ分かりにくいかというと以下のような感じです。
折れ線グラフを見ると、例えばFB%が減っているようですが、そもそも”FB”ってなんだって話です。
小さいころにパワプロをやったのを思い出して、どうせなら各変化球の変化する方向が分かるのが良いのではないかと考え、結論から言うと、以下のようなレーダーチャートを作成しました。
このレーダーチャートなら、どの方向に変化するボールがどの程度投げられたかが一目で分かります。今回のブログでは、備忘録的にどのようにこのレーダーチャートを作成するかを記載します。
作成手順
①各変化球の変化方向を三角関数で表現する
②レーダーチャートの背景を作成する(エクセル or パワポ)
③計算フィールドをTableauで作成する
それでは、各手順を解説していきます。
①各変化球の変化方向を三角関数で表現する
最終的なTableauでの実装は散布図となります。
そのため、変化球の方向毎にどの方向に散らばらせるかを決める必要があります。
そこで、三角関数を使用します。ここでは、絶対値を気にせずに方向のみを考えるため、下図のようにCT(Cutter)であれば、キャッチーから見て右に曲がっていくので、右方向やや下に曲がるとして、角度350°の三角関数で表現すると、
X座標:cos(2π*350/360)
Y座標:sin(2π*350/360)
となります。これを全ての変化球に対して定義していきます。それをまとめた結果が以下のような図になります。
②レーダーチャートの背景を作成する(エクセル or パワポ)
ここはとてもシンプルです。先ほどまでに作成した三角関数を使用してTableauの散布図の背景を作成します。別に作成しなくても、それらしく表示されるのですが、意味が分かりずらいので、背景があった方が分かりやすいかと思います。ここで重要なポイントは三角関数の角度と矢印の角度をきちんと揃えることです。そうしないと、表示した際に散布図の点と背景が一致しません。
ちなみに、これをTableauの背景に設定する方法は以下のような方法をとっております。ダッシュボード側で貼ることもできるのですが、大きさや中心を厳密に合わせたいので、Map > Background Imageで設定します。設定画面は以下のようにしています。
ポイントがあるとすれば、X FeildとY Feildを0.2の大きさにしている点です。これは、散布図の横幅や縦幅のどこに合わせるかという話ですが、今回は各変化球のパーセントを表現するため、最大でも1であり、それもばらけているので、大きさとして0.2程度がちょうどよかったです。表示するもののおおよその最大値に合わせておくと良いのではないかでしょうか。
③計算フィールドをTableauで作成する
ここまで来たら後はシンプルかと思います。①の手順で三角関数を作成しているので、それを計算フィールドで実装します。なお、データは縦持ちであり、KPIというディメンジョンで変化球が定義されていますので、CASE文を使用して以下のように表現されます。この表現をしようとする場合、データが横持ちだと実装できませんので、事前に縦持ちに変換しておくようにしましょう。
作成したX_NumdataとY_Numdataをそれぞれ行と列シェルフに配置してあげて、比較したいSeasonをフィルタと色に入れてあげれば、以下のようなレーダーチャートが完成します。
いかがだったでしょうか。
今回のグラフは直球(FB)が多かったので、少し不格好なレーダーチャートになってしまったが、これならどの方向の変化球が多いかが、素人でもわかるかと思います。明らかに右下に曲がる球が多いですね。
以上です。