Chart PieceLabelとは、円グラフ、ドーナツチャートの表示に特化したオープンソースのライブラリです。
これを用いると、凡例や数値のパーセント表示を容易に行うことができます。
ライブラリのソースコードは、GitHubのサイトhttps://github.com/emn178/Chart.PieceLabel.jsからダウンロードできます。 それを適当なファイルに保管して、jsとして利用すればよいのです。
Chart.jsの options に pieceLabel という機能を追加する形式です。
pieceLabelの主な機能を示します。すなわち、Chart.jsのプログラムに次の必要部分だけを追加するだけでよいのです。
options: {
pieceLabel: {
render: 'value', // 表示対象 'label', 'value', 'percentage', 'image' 省略時 'percentage'
precision: 0, // percentageのときの小数点以下桁数 省略時 0
// 表示のフォント
fontSize: 12, // 文字サイズ 省略時 12
fontColor: '#fff', // 色 省略時 '#fff'。[配列]にして個別に変えることが可能
fontStyle: 'normal', // フォントPieceLabel
fontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
// 表示位置
position: 'default', // 表示位置 'default'(グラフ内), 'border'(周辺)'outside'(外) 省略時 'default'
arc: true, // 'border'のとき、円弧に沿って表示するか 省略時 true
outsidePadding: 4, // 'outside'のとき、グラフとのパディング 省略時 4
}
}
特に説明の必要はないでしょう。https://emn178.github.io/Chart.PieceLabel.js/samples/demo/に実例が掲げられています。
Aは、最も基本的なもので、グラフ内部にパーセントにして表示しています。
Bは、凡例をグラフの外に表示しました。凡例にスペースをとられて円が小さくなっています。
AとBを組み合わせたいのですが、pieceLabelで複数のrenderを記述できないようです(私が知らないだけかもしれません)。
Cは、なんとか2つの項目を取り込もうとしたものです。凡例はPieceLabelを用いましたが、数値は dataLabelPlugin の表示位置を修正して表示しました。
PieceLabelA
options: {
:
pieceLabel: {
render: 'percentage',
fontSize: 16,
fontColor: "black"
}
PieceLabelB
options: {
:
pieceLabel: {
render: "label",
fontSize: 16,
fontColor: "black",
position: "outside"
}
PieceLabelC
options: {
:
pieceLabel: {
render: "label",
fontSize: 16,
fontColor: "black"
}
},
plugins: [dataLabelPlugin]
: