公開日: 2024/11/11
最終更新: 2024/11/11
ラベルをグラフ上に表示することはとても便利です。 ラベルがあることで、重要な数字を一目で理解でき、正確な情報を迅速に把握できます。この時系列グラフの起点と終点は何なのか、最大値は何か、異常値に関する情報は何か、など…ラベルは視覚的なデータ理解を助けます。
そんなラベルですが、Tableauでラベルを表示するときに、頻繁に出会う問題があります。ラベルの表示位置がグラフと重なり、ラベルの可読性が低くなる場合があることです。
下図のような状況に出会ったことのある方は多いのではないでしょうか。
時系列の始点と終点を表すラベルは、左右に十分な余白がないためにグラフと重なっています。
縦軸の最大値と最小値を表すラベルは、データ点の上下ではなく左右の開いているスペースに押し込むように表示されており、一見してどの点におけるラベルか分かりにくいです。
この記事では、グラフの縦軸と横軸に十分な余白を用意することで、下図のように可読性の高いラベル表示を実現する方法について書きます。
ワークブックはこちら
データはこちら
はじめに:今回のワークブックについて
今回のワークブックでは
異なる日付粒度に対しても機能すること
正または負の値だけを持つ数値型についても、正負両方をもつ数値型についても機能すること
を示すために、以下計算フィールドを用意し、それぞれ縦軸と横軸にします。
Measure
IF [Measure Selector] = 'Sales'
THEN
[Sales]
ELSE
[Profit]
END
Date
DATE(DATETRUNC([Date Granularity], [Order Date]))
ここでは以下2つのパラメーターを使用しています。
日付軸に余白を作る
まずは日付軸について、ラベル表示のために余白を作る方法について述べます。
日付型を延長する方法はとてもシンプルです。
以下2つの計算フィールドを作成します。
Date OFFSET Min
WINDOW_MIN(MIN([Date]))
- (WINDOW_MAX(MIN([Date])) - WINDOW_MIN(MIN([Date])))
* [Date OFFSET Magnifier]
Date OFFSET Max
WINDOW_MAX(MIN([Date]))
+ (WINDOW_MAX(MIN([Date])) - WINDOW_MIN(MIN([Date])))
* [Date OFFSET Magnifier]
ここで [Date OFFSET Magnifier]は小数値のパラメーターです。
上記それぞれの式が何をしているかを理解するために、簡単な図を用意しました。
例えばDate OFFSET Minの計算式を見ると、要は
横軸の左端に、
左端と右端の距離に[Date OFFSET Magnifier]を掛けたものを引くことで、
横軸の左端よりも左側となる値を計算している
ことが分かります。
実際に見てみましょう。作成した2つの計算式をリファレンスバンドで表示しましょう。
このように、それぞれグラフの左端と右端それぞれの少し先にリファレンスバンドが出来ています。
そしてリファレンスバンドが作成されたことで、軸が左右それぞれ少しずつ延長され、ラベルを表示するための余白が生まれました。
ここでは何が起きているかを可視化するためにリファレンスバンドの値と線を表示しましたが、グラフに必要な情報ではないので、非表示に変更しましょう。
ということで、時系列方向の軸にラベル表示のための余白を作ることができました。
数値軸に余白を作る
次に、数値軸に余白を作成します。
最初に一番手っ取り早い方法を紹介しますと、透明度100%の棒グラフを二重軸で用意すると出来ます。
(枠線表示をして棒グラフを強調表示しています)
見たとおりでして、棒グラフは上下にうまく余白を作成してくれます。
ただしこの方法は以下の場合で機能しません。
そもそも二重軸を使えない場合
正負両方の値をグラフが持たない場合
1番目の場合ですが、以下のような移動平均を表示し、かつ移動平均線の書式を調整して表示したい場合などですね。棒グラフを使うための軸がありません。
2番目の場合ですが、例えば売上を縦軸にした場合、最大値も最小値も棒グラフの上部にラベル表示されるため、下図のように表示がイマイチです。
ということで、日付軸と同様にリファレンスラインを活用する方法を紹介します。
同様の考え方をして、以下2つの計算フィールドを作成します。
Measure OFFSET Min
WINDOW_MIN(SUM([Measure]))
- (WINDOW_MAX(SUM([Measure])) - WINDOW_MIN(SUM([Measure])))
* [Measure OFFSET Magnifier]
Measure OFFSET Max
WINDOW_MAX(SUM([Measure]))
+ (WINDOW_MAX(SUM([Measure])) - WINDOW_MIN(SUM([Measure])))
* [Measure OFFSET Magnifier]
ここで [Measure OFFSET Magnifier]は小数値のパラメーターです。
同様に簡単な絵を描いてみました。
実際にリファレンスバンドを作成すると、下図のようになります。
ということで、これら上下左右のリファレンスバンドを組み合わせると、下図のように上下左右にラベルのための余白を作成することができます。
Tableau Publicにパブリッシュしたワークブックでは、色々と条件を変えて遊べるようにしました。
グラフの大きさと縦横比によって余白の大きさを変えたいと思いますので、適宜リファレンスラインの計算式やパラメーターの係数値は調整ください。
この記事で紹介した内容は、あくまでも余白を作るための考え方です。
最後に
ありそうで見つからなかった、グラフの数値軸と日付軸にラベル表示のための余白を作るための方法についての記事でした。
ちなみに数値軸について、最大値または最小値どちらか一方にだけラベル表示する場合については、こちらの記事にあるようなリファレンス分布を使用する方法も可です。
条件によっては最大と最小の両方をカバーすることも出来ると思いますが、一般化が難しかったため、記事中での紹介を断念しました。一般化を気にしない場合(例えばフィルター条件などを考えなくていい場合など)では問題なく使用できると思います。
要は透明なリファレンスライン/またはリファレンスバンドを活用しましょう、というお話でした。
そこまで難しい話でもないと思いますので、ぜひ活用ください。
そしてTableauさん、ぜひ自動で余白を作るようにしてください。
質問などありましたら、XかLinkedinまでお願いします。