
Grafana Canvasパネルで実現する動的レイアウト設計の基礎
GrafanaのCanvasパネルでは、さまざまな図形を配置してグラフィカルな表現が可能です。
チュートリアルにあるように、風力発電での発電量の表示とともにプロペラを回すといったこともできます。
この図形を配置する上で理解が必要なプロパティが、LayoutのConstraints(制約)とPosition(位置)です。
Constraintsを直訳すると「制限」ですが、Positionプロパティと組み合わせて、オブジェクトの位置や大きさが変わるときの動きを制限する設定になります。
Constraints
パネルの大きさが変わるときに、オブジェクトの位置の調整方法を指定する項目です。
設定できる内容は次のとおりです。
X軸
- Left
- Right
- Left & Right
- Center
- Scale
Y軸
- Top
- Bottom
- Top & Bottom
- Center
- Scale
Constraintsのデフォルトは、X: Left / Y: Top です。
X軸・Y軸とも「Scale」とそれ以外の「位置指定」で処理の仕方が分かれています。
まず位置指定では、指定したキーワードの方向に固定されます。例えばTopであれば、パネルの高さが変わっても、パネルの上辺とオブジェクトの上辺の距離は固定されて動きません。
Scaleはその名の通り、パネルの表示領域に合わせてオブジェクトの位置が変化します。
Position
Positionでは、オブジェクトの位置や大きさを制御します。
Constraintsによって内容が変わりますが、デフォルトのLeft/Topの組み合わせであれば、top/left/width/height/rotationの順番で並びます。
Constraintsごとに、どのような設定ができるか見ていきます。
ConstraintsがLeft / Right / Top / Bottom
Constraintsの指定が一方向であれば、同じ設定がPositionに表示され、合わせてオブジェクトの幅(width)と高さ(height)を設定できます。
例えば、X軸の制限がLeftであればPositionにもleft、Y軸の制限がTopであればPositionにもtopが表示されます。
入力された数値は、その方向からの絶対距離を表します。
例えば「top: 20」であれば、フレームの上辺からオブジェクトの上辺まで20pxの距離に固定するという設定で、フレームの大きさが変わっても20pxの距離が維持されます。
TopとLeftだと固定されている感がないのですが、RightとBottomを設定するとわかりやすいと思います。
ConstrainsがLeft&RightやTop&Bottom
Positionにはleftとright / topとbottomが表示され、一方向での指定ができたwidthやheightの表示はなくなります。
指定された方向のフレームの辺から、オブジェクトの辺までが固定されるのは一方向の指定と同じです。
しかし両方向が固定されるため、フレームの大きさに応じてオブジェクトの大きさも変わります。
ConstrainsがCenter
Positionにはleft/topとwidth/heightが表示されます。
Centerは基準点が変わり、フレームのセンターが原点となり、そこからオブジェクトのセンターまでの絶対距離を示します。
中央から4分割し左上がプラス位置、右下がマイナス位置になります。
width / heightはそのままの内容で、オブジェクトの幅 / 高さを表します。
ConstraintsがScale
この場合のPositionは、Left&RightやTop&Bottomと同じ項目になります。
ただし数値が他の設定と異なり、相対距離(%)として扱われます。
Top 20 とした場合、フレームの上辺からオブジェクトの上辺の距離はフレームの高さの20%の位置に配置されます。
設定例
これまでの解説をもとに、設定例を紹介します。
ヘッダーみたいに扱いたい
- X: Left&Right
- Y: Top
左右に固定することで、幅が変化しても常に幅いっぱいに広がります。
高さも固定しているため、フレームの幅が変化しても高さは変わりません。
常に右下へ配置したい
- X: Right
- Y: Bottom
width/heightは適切な大きさを設定してください。
横方向で伸縮しても重ならないようにしたい
- X: Scale
- Y: Top
オブジェクトの幅が拡大縮小するので、重ならないようになります。
ただし中に入っている文字列の大きさは変わらないため、最小幅を考慮しながら文字サイズを設定してください。
終わりに
Canvasパネルのレイアウト機能は、動的なダッシュボードに対応するための設定です。ConstraintsとPositionプロパティの適切な組み合わせにより、ダッシュボードのサイズ変更やレスポンシブ表示に対しても一貫性のある視覚表現が可能です。
本記事で解説したように、Constraintsの設定によって固定位置や相対位置、スケーリングなどさまざまな配置を実現できます。これらを活用して、情報価値の高いビジュアライゼーションを構築してみてください。