请参考这个小提琴: https ://jsfiddle.net/4mxhogmd/1/
我正在研究 chart.js 如果你在小提琴中看到,你会注意到在某些情况下,条形图顶部的值没有正确显示(超出画布)在研究过程中我遇到了这个链接 如何在图表上显示数据值.js
但是在这里,他们也针对相同的情况使用工具提示来调整栏内的文本。我不想要这个。
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["2 Jan", "9 Jan", "16 Jan", "23 Jan", "30 Jan", "6 Feb", "13 Feb"],
datasets: [{
data: [6, 87, 56, 15, 88, 60, 12],
backgroundColor: "#4082c4"
}]
},
options: {
"hover": {
"animationDuration": 0
},
"animation": {
"duration": 1,
"onComplete": function () {
var chartInstance = this.chart,
ctx = chartInstance.ctx;
ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
ctx.textAlign = 'center';
ctx.textBaseline = 'bottom';
this.data.datasets.forEach(function (dataset, i) {
var meta = chartInstance.controller.getDatasetMeta(i);
meta.data.forEach(function (bar, index) {
var data = dataset.data[index];
ctx.fillText(data, bar._model.x, bar._model.y - 5);
});
});
}
},
legend: {
"display": false
},
tooltips: {
"enabled": false
},
scales: {
yAxes: [{
display: false,
gridLines: {
display : false
},
ticks: {
display: false,
beginAtZero:true
}
}],
xAxes: [{
gridLines: {
display : false
},
ticks: {
beginAtZero:true
}
}]
}
}
});
对于所有情况,我想要的是仅在顶部显示价值。
原文由 Kenny 发布,翻译遵循 CC BY-SA 4.0 许可协议
我从 myChart 内部定义的数据中提取数据,这样我就可以从数据集中提取最大值。然后在 yAxes 内部,您可以将最大刻度设置为数据集中的最大值 + 10。这确保了图表中顶部的条不会超出画布的边缘并且不会显示它们的值。