ラベルをバー内に表示するオプション「ミラー」があります。
horizontalBarチャートの「オプション」設定の例:
options: {
scales: {
yAxes: [{ticks: {mirror: true}}]
}
}
Doc: http://www.chartjs.org/docs/latest/axes/cartesian/#common-configuration
データ値を表示するための元のソリューション を参照して、animation
のonComplete
でHTML5 Canvas fillText()
メソッドを使用すると、以下のコードで取得できます何が必要:
チャート関連データをカスタム表示するための鍵は、以下のthis.data.datasets
のようにチャートのデータセットを検査することです。これを行うには、このデータセットのさまざまな値の場所と、fillTextメソッドの値を配置する位置を調べます。
チャートのデータセットの検査: Image
スクリプト(Chart.js 2.0以降):
var barOptions = {
events: false,
showTooltips: false,
legend: {
display: false
},
scales:{
yAxes: [{
display: false
}]
},
animation: {
onComplete: function () {
var ctx = this.chart.ctx;
ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily, 'normal', Chart.defaults.global.defaultFontFamily);
ctx.textAlign = 'left';
ctx.textBaseline = 'bottom';
this.data.datasets.forEach(function (dataset) {
for (var i = 0; i < dataset.data.length; i++) {
var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model,
left = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._xScale.left;
ctx.fillStyle = '#444'; // label color
var label = model.label;
ctx.fillText(label, left + 15, model.y + 8);
}
});
}
}
};
jsFiddle: http://jsfiddle.net/jfvy12h9/
Chartjs 2.0 +では、ラベルを90度回転し、負のパディングを適用して、ラベルが「バー」内で上に移動するようにすることで、この効果を実現できます。このようなもの:
new Chart(document.getElementById(id), {
type: 'bar',
data: data,
options: {
scales: {
xAxes: [
{
ticks: {
autoSkip: false,
maxRotation: 90,
minRotation: 90,
padding: -110
}
}
]
}
}
});
詳細については tick configuration documentation をご覧ください。
現時点ではこれに直接的な選択肢はないようです。可能な実装は、onAnimationCompleteフックを使用してバー/列を反復処理することです。詳細な説明については、この質問をご覧ください Chart.jsでデータ値を表示する方法
これには欠点があることを思い出してほしい。 onAnimationCompleteを使用するため、チャートでアニメーションが発生するたびに、値が1秒間消えてから再び表示されます。