ねこ吸いたい

勉強と読書記録など

【Tableau Tips】xy平面に正確な円を描く

Tableauでは散布図で簡単に円のサイズで数字の大小を表すことができます。金額など大きい数値なら下のようにサイズ感がつかめれば事足りるため気にしてこなかったのですが、xy平面上に円を描くことはできるのでしょうか。

結論、できた

結論から言うとできました。SQRT(平方根)関数を使って、ひとつひとつの円について座標を計算します。できるまでの過程で色々気づきがあったため、試行錯誤の経緯を残しておきます。

 

散布図を試す:失敗

xyを円の中心、zを円の半径としてグラフをつくり、散布図にしました。

no x y z
1 5 5 10
2 0 0 5
3 -5 5 1

 

サイズ感が違う…そしてマークの「サイズ」で大きさを変えてもzの大きさ通りにはなりません。どうやらTableauは、サイズに入れた項目と比例して半径ではなく、面積が変わるようです。

参照:半径が比例した円

しかし面積を計算してサイズに入れても、正確な円の大きさにはなりませんでした。


SQRT関数を使う:成功

どうやらサイズを使って正確な円を描くのは難しそうなので、座標を計算することにします。関数グラフを描画するために、-1から1まで0.01刻みの値を用意しておきます。横の結合キーは、描画したい円一覧とくっつけるためのキーです。

・-1から1までの実数

N 結合キー
-1 1
-0.99 1
-0.98 1
-0.97 1
-0.96 1
1 1

・円一覧

そして円一覧も用意しておきます。これにも結合キーをつけておきます。

no x y z 結合キー
1 5 5 10 1
2 0 0 5 1
3 -5 5 1 1

 

2シートを物理結合する

ここまでできたら2つのシートをTableau Desktopで結合します。円の数(3つ)×実数の数(201)のデータが作成されるため、大量の円を描くときは注意しましょう。

X軸の値を計算する

ここまで来たらあとは座標を計算していきます。X軸は実数N×半径+中心点のX

座標です。X軸の値:[N]*[Z]+[X]

 

Y軸の値を計算する

一方でY軸は2つの式を作る必要があります。値1は円の上半分、値2は円の下半分のY座標を示しています。SQRT関数を使って求めた値に半径をかけて、円の中心のY座標を足しています。

Y軸の値1:SQRT(1-[N]^2)*[Z]+[Y]

Y軸の値2:-SQRT(1-[N]^2)*[Z]+[Y]

 

シート上に項目を配置する

必要な座標が揃いましたので、あとはシート上に配置します。

・X軸の値:列に配置し、右クリックでディメンションに変更

・Y軸の値1,2:行に配置し、二重軸でひとつのグラフに表示&軸の同期で揃える

・No:色に配置し、それぞれの円を別の色で描画。色分け不要なら詳細でもOK。

 

あとは円ごとのラベルやツールヒントなど、表示をお好みで変更するだけです。X軸Y軸をアナリティクス→定数線で入れてもいいかもしれません。

まとめ

普段は数値をサイズに入れて終わりのところ、正確な円を関数で描くことができました。結合でデータ量が増えるので、描画数や必要なグラフの正確さによって採用するかを決めるのがいいかもしれません。