D3.js v5 入門|#5 棒グラフにクリックイベントを追加する

次の棒グラフにクリックイベントを追加し、バーがクリックされるとアラートメッセージを表示するように実装してみます。

Demoを表示

1.全体のコード

2.コードの詳細( HTML )

グラフを表示する場所を定義します。

3.コードの詳細( JavaScript )

3−1.グラフ全体の設定

グラフ全体の設定では、グラフを描画する領域のサイズと余白を定義します。

領域全体の大きさは、高さ 400px、幅 500pxの領域で、上下左右に 50pxの余白があります。図にすると次のようになります。

ポイントは 次の箇所になります。

グループを追加し、そのグループ配下の要素に余白分(左・上)移動するようにしています。

3−2.X軸の設定

X軸に表示する実際の値(domain)、描画する幅(range)、グラフの間隔(padding)を設定します。
その設定値を用いて、軸用のグループ要素(g)をグラフに追加します。

3−3.Y軸の設定

Y軸もX軸同様に設定を行い、軸用のグループ要素(g)をグラフに追加します。

3−4.各データを描画

最後に、各データを描画します。

x:座標のどの位置(x)から描画するか
y:座標のどの位置(y)から描画するか
height:描画する高さ
width:描画する幅

3−5.クリックイベントを追加

イベント処理は、selection.on(typenames[, listener[, options]]) を使用して行います。
今回は次のように、全てのrect要素に対して、clickイベント発生時の処理を追加しています。

イベント発生時に実行する関数には引数が設定でき
第1引数:要素のデータ
第2引数:インデックス
第3引数:イベントが発生した要素(Node List)
が設定されます。

また、関数内では、d3.event や d3.mouse でイベントが発生した座標などの情報も取得することができます。

今回は、クリックイベントを実装しましたが、typenames にはクリックイベント以外にも、ブラウザが対応している任意のDOMイベントを指定することができます。

設定できるイベントは、こちら(Event reference) を参照して下さい。

4.まとめ

棒グラフに、クリックイベントを追加しました。
selection.on を使用すると様々な要素にイベントが登録できるので、色々と応用ができると思います。