Chart.jsでツールチップをパーセント表示にする方法

Pocket

Chart.jsでグラフを描画した際に、グラフにカーソルを載せることで表示される詳細情報(ツールチップ)をパーセント表示にする方法です。

ネット上では幾つかサンプルが見つかるのですが、グラフの一部分のみパーセント表示にする方法が多く、目的とする操作ができなかったので備忘のため記事を残します。

パーセント表示にするために全体の合計値を取っている箇所(変数totalValue)の算出方法が見つからずに苦労しました。

optionsで設定しているcallbacksの中で、引数のtooltipItemとdataに対して、data.dataset[番号].data[tooltipItem.index]としている部分です。

var options = {
    省略
    tooltips: {
        callbacks: {
            label: function (tooltipItem, data){
                var totalValue = 0;
                /* データセットの数だけ繰り返し */
                for (var i = 0; i < data.datasets.length; i++) {
                     /* 数値型でデータの数だけ加算してゆくことで合計値を取る */
                     totalValue += Number(data.datasets[i].data[tooltipItem.index]);
                }
                /* 説明のラベル:%表示(小数点下2桁):%にする前の値 */
                return data.datasets[tooltipItem.datasetIndex].label
                + ": "
                + (data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index] / totalValue * 100).toFixed(2)
                + " % : "
                + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
            }
        }
    }
};

以上。

広告

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です