chart.js 2.6.0chart.js:円グラフの外側ラベルの表示
私はこのようになり、チャートレンダリングする必要があります。
は、必ずすべてのツールチップを表示しません彼らは適切な方法でレンダリングされませんので、許容可能な方法で、:
残念ながら解決策がまだ見つかりませんでした。私はピースラベルプラグインを試しましたが、ラベルが重なり、特定のラベルを隠すことができないので、これと同じ問題があります。
ここでスライス上のラベルを配置するピースラベルを使用して、私のチャートを作成するコードです:
private createStatusChart(): void {
const chartData = this.getStatusChartData();
if (!chartData) {
return;
}
const $container = $(Templates.Dashboard.ChartContainer({
ContainerID: 'chart-status',
HeaderText: 'Status'
}));
this._$content.append($container);
const legendOptions =
new Model.Charts.LegendOptions()
.SetDisplay(false);
const pieceLabelOptions =
new Model.Charts.PieceLabelOptions()
.SetRender('label')
.SetPosition('outside')
.SetArc(true)
.SetOverlap(true);
const options =
new Model.Charts.Options()
.SetLegend(legendOptions)
.SetPieceLabel(pieceLabelOptions);
const chartDefinition = new Model.Charts.Pie(chartData, options);
const ctx = this._$content.find('#chart-status canvas').get(0);
const chart = new Chart(ctx, chartDefinition);
}
private getStatusChartData(): Model.Charts.PieChartData {
if (!this._data) {
return;
}
const instance = this;
const data: Array<number> = [];
const labels: Array<string> = [];
const colors: Array<string> = [];
this._data.StatusGroupings.forEach(sg => {
if (!sg.StatusOID) {
data.push(sg.Count);
labels.push(i18next.t('Dashboard.NoStateSet'));
colors.push('#4572A7');
return;
}
const status = DAL.Properties.GetByOID(sg.StatusOID);
data.push(sg.Count);
labels.push(status ? status.Title : i18next.t('Misc.Unknown'));
colors.push(status ? status.Color : '#fff');
});
const dataset = new Model.Charts.Dataset(data).setBackgroundColor(colors);
return new Model.Charts.PieChartData(labels, [dataset]);
}
結果:
は、あなたが既に持っているコードを提供してもらえますか? –
を参照してください。https://stackoverflow.com/questions/36209074/how-to-move-labels-position-on-chart-js-pie – bunzab
@JeffHuijsmansグラフ自体を担当するコードを追加しました。私が使用しているクラスは、オプションのラッパーです。 –