KibanaのCanvasでは、グラフや表だけでなく、画像を使ってデータの値を示すこともできます。
といわれても、何をどうやって?と疑問に思うことでしょう。今回は、画像を使ってデータを示す方法を具体的に紹介していこうと思います。
Canvasではこんなこともできるんだと知ってもらえればと思います。
使用するデータ
今回は、サンプルデータとして提供されているKibana_sample_data_flightsのデータセットを使います。
画像でデータを可視化
画像の繰り返し
まずは画像の繰り返しでデータを可視化します。その名の通り、データの値分画像を繰り返し表示します。
Canvasのワークパッドを開き、[エレメントを追加] > [画像] > [画像の繰り返し]を選択します。
デフォルトでは、以下のようにElasticのロゴがいっぱい表示されます。ここから設定を変更し、表示するデータと画像を変更していきます。
例として、 Kibana_sample_data_flights のフィールドであるAvgTicketPriceを表示してみます。
そのままの値を画像の繰り返しで表示すると、数百個の画像が表示されてしまうことになるので、元の値を100で割ったものを表示します。
表現構文は以下のようにします。
filters
| esdocs index="kibana_sample_data_flights" fields="AvgTicketPrice"
| math "divide(mean(AvgTicketPrice), 100)"
| repeatImage image={asset "asset-a85d1904-6e5d-490e-8e37-80260d9dbf23"}
| render
AvgTicketPrice のmean(平均)をとるのは少し変な感じがしますが、 AvgTicketPriceは各レコードが保持している値なので、なにかしらの形で集約する必要があります。今回は、 AvgTicketPrice の平均値をとることで1つの値を定めました。
表示させる画像は、エレメントを選択した状態で画面右側の[画像]にドラッグアンドドロップします。
こうして表示されるのは以下のような画像です。
画像の部分表示
次は画像の部分表示です。この方法では、割合データの表示に用います。この方法で表示させる値は0~1の間である必要があります。
[エレメントを追加] > [画像] > [画像の部分表示]を選択します。
今回は、 AvgTicketPrice を1000で割った値を表示してみます。
filters
| esdocs index="kibana_sample_data_flights" fields="AvgTicketPrice"
| math "divide(mean(AvgTicketPrice),1000)"
| revealImage origin="bottom" image={asset "asset-a85d1904-6e5d-490e-8e37-80260d9dbf23"}
| render
以下のような画像が表示されます。
画像の50%程度が表示されていることがわかります。このように、値の割合分だけ画像を表示されることができます。
背景画像の設定
上記の表現方法でもいいですが、これだけでは実際どれくらいの割合なのかがわかりません。そこで、背景画像を設定することで、割合を把握しやすくすることができます。
エレメントを選択し、[画像を徐々に表示]の右側にある+ボタンを押し、[背景画像]を選択します。
基本的に、背景画像には部分表示させる画像と同じもので色違いの画像を使うといいと思います。例えば背景画像は薄い灰色、部分表示の画像はカラーといった具合にするとわかりやすくなります。
もちろんが背景画像をことなる画像に設定してもOKです。好みの画像を組み合わせてください。
表示画像に使えるアイコンサイト
ここで表示させたい画像はアイコンが多いと思います。
以下に使えるアイコンを提供しているサイトを紹介しています。.pngの画像が使いやすくて便利です。
まとめ
KibanaのCanvasで画像を用いてデータを可視化する方法を紹介しました。
Canvasでは様々な方法でデータを可視化できるので、おしゃれなダッシュボードを簡単に作成することができます。
グラフや表だけではなく、今回紹介したやりかたも是非取り入れてもらえればと思います^^
ではでは👋