[Tableau]ブラックホール周りの点粒子の軌道を描画する
summary
- 昨年度まで研究していたブラックホールに関するVizを作成してみました
- Pythonでブラックホール周りの点粒子の軌道を計算したものをTableauでアニメーション化しました
- Tableau曲線表現講座の中で話題になった「曲線の座標となるフィールドに地理的役割を与える」というTipsも活用したVizになっています
はじめに
DATA Saberへのチャレンジが決まり、初のPublic投稿はどんなVizにしようか考えていたところ、↓のポストが流れてきました。美しいVizだなぁと思うと同時に自身の専攻が宇宙論であったことを思い出し、自己紹介も兼ねた1本目の投稿の題材とすることにしました。
データの作成
今回は、粒子がブラックホールに吸い込まれていく様子をVizで表現します。軌道をアニメーションで表現したいので、欲しいデータセットは[時刻], [座標]
の形式になります。
軌道は測地線方程式と呼ばれる式を解くことによって得られます。一番シンプルなブラックホール解であるシュバルツシルト解を仮定すると、解くべき式は
となります(
データを接続するとこんな感じ
Vizの作成
点粒子の軌道の描画
まずは[R],[Phi]
から[X],[Y]
を作成した上で、それぞれ地理的役割(経度)・地理的役割(緯度) を付与します。
[R] * COS([Phi])
[R] * SIN([Phi])
(※ここでの[Phi]
は弧度法の角度です。度数法の角度の場合はCOS(RADIANS([Phi]))
などとする必要があります。)
ディメンジョンに変換した[L]
でフィルターを作成した上で、[X],[Y],[time]
をマークカードの詳細(マークの種類は 「円」 )に入れると軌道が登場します。
そして、[time]
を「ページ」に入れることでアニメーションが完成します。「履歴の表示」の設定は以下の通りです。
「履歴の表示」の設定
また、ページが切り替わる度に点滅しているように見えたので今回は 「書式設定」→「アニメーション」 からアニメーションを「オフ」に設定しました。
ブラックホールの描画
次に、同一シート上にブラックホールを描画していきます。先ほど[X],[Y]
に地理的役割を付与してプロットしているため、マークレイヤーの機能を用いて点粒子の軌道とブラックホールを重ねることができます。これは先日のTableau曲線表現講座で話題に上がった「曲線の座標となるフィールドに地理的役割を与える」というTipsの中で学んだものです。
今回の計算では長さの単位はブラックホールの半径としています。すなわち、ブラックホールの半径は1です。これをBUFFER関数を用いて表現します。(1mや1kmではなく、緯度・経度の「1」なので注意が必要)
BUFFER(MAKEPOINT(0,0), DISTANCE(MAKEPOINT(0,0), MAKEPOINT(0,1), "m"), "m")
BH_BUFFER
をマークレイヤーにドラッグアンドドロップして、書式を整えれば完成です!
今回の学び
- フィールドに地理的役割を付与することで緯度経度で見た座標上にプロットができ、マークレイヤー機能も使える
- このときの長さの単位は緯度経度で測られるため単位の変換が必要
- アニメーションのデフォルト値は0.30秒となっており、オフにすることも可能
(以下、Publicに掲載して気がついたこと)
- 使うフォントに気をつけないとDesktop上とPublic上で表示が異なる
- ページカード内のスピードコントロールはPublic上では表示されない(?)
この2つについては今後もう少し詳しく調査してみようと思います。
Discussion