Tableau:SIN、COS関数を使ってTableauでアナログ時計を作る | VizHacker

Tableau:SIN、COS関数を使ってTableauでアナログ時計を作る

Tableauの関数にはSUMやAVGなど頻繁に使うものから、「これ絶対使わないだろ!」と思う関数もたくさん存在します。

今回はその中の、「SIN」と「COS」を使いアナログ時計を作ってみようと思います。

 

SIN、COS関数の機能

SIN(number) COS(number) で数値を返します。

SIN(90)=1 、COS(0)=1 などとなります。

また、三角関数では一般的に角度の箇所は『π/2』などとπを絡ませて使われます。

Tableauにもπを示す関数は存在し、『PI()』で指定します。

 

アナログ時計の設計

Tableauでアナログ時計を作る構想は次のような感じでいきます。

① 時針と分針を分ける

② 針の先と、中心に座標を割り振る

③ ②の2点を結ぶ

 

まずはデータから作る

データをオリジナルで作る必要がありそうなので、まずはその設計から。

①時針と分針を分ける

時針と分針はそれぞれ別の速さで動くので、分ける必要があります。

今回は、

ディメンション『TimeUnit』を作成し、「hours」と「minutes」の2つを持たせます。

 

②SIN、COS関数を使い座標を割り振る

時計の針は、中心(0,0)と先(A,B)から成ります。

中心は(0,0)で固定。

時計針の先は平面の円周上を動くので、『〜時』と『〜分』の2つの変数で指定できます。

 

針の先の座標の振り方は、以下のサイトを参考にしました。

第340章 時計を作る アナログ部分を作る

教えて!goo 三角関数

 

これを踏まえ、

path=0→X座標もY座標も0となる(時計の中心)

path=1→X座標、Y座標は時間・分に合わせTableau上で計算させる(時計の針先)

とすれば良さそうです。

 

 

③パスマッピングで2つの点をつなぐ

分針を1つに定めるためには、針の先と時計の中心の2つの(円上での)座標が必要です。

つまり、円の中心(0,0)と針の先(A,B)を繋げば針の完成です。

そして、このように起点と終点を繋ぐにはTableau上で「パスマッピング」という機能を使います。

↑のようなデータの場合、pathが0→1のように小さいものから座標を繋いでいきます。

 

↓再現図がコチラ

pathIDの順番通りの線が繋がっています。

これで時計の中心(pathID=0)時計の針先(pathID=1)を繋げば良さそうです。

まとめます。今回の時計をTableau上で表現するフローとしては、

このようになります。

そして、データの形としては(例えば12時34分を可視化したい時)

こんな感じにいけそうです。X座標、Y座標はTableau上で計算させます。

 

実際に可視化してみた

上記を踏まえ、アナログ時計を可視化しました。


スライダーを使うことで時間と針が動きます。

詳しいフィールド計算をみたい方は上記からDLしてください。

ついでに、このアナログ時計を使い、Tableau社の世界中のオフィスの時間帯が連動してわかるビジュアライゼーション、「Tableau Watch」を作成してみました。

Tableau Publicでは「ページ機能」が使用できないので残念ですが、針がくるくる回って楽しいですよ。

本サイトではリクエスト募集しています。