我只是偶然发现了这个问题,因为我遇到了类似的问题:我的 Chart.js 图表的类型是“horizontalBar”并且对于某些数据集(数据集中没有零值)水平条不是从 0 开始,而是从数据集中的最小值开始。
我试图找出一个解决方案,并在创建图表时在 options 对象中提出了以下条目:
ticks: {
beginAtZero:true,
mirror:false,
suggestedMin: 0,
suggestedMax: 100
}
然而,尽管所有帖子都说它是这样工作的,但它并没有按预期工作。
在进一步调查和阅读 Chart.js 文档后,我找到了解决方案。进一步的步骤不起作用的原因是我在documentation 中找到的:
但是,在条形图中的 x 轴上指定的任何选项都将应用于水平条形图中的 y 轴。
所以我只是更改了我的选项对象以保存 xAxes 的正确配置并且它起作用了。
对于那些感兴趣的人,这里是我用于创建 y 轴始终从零开始的水平条形图的整个代码:
this.chart = new Chart(
ctx,
{
type: 'horizontalBar',
data: this.data.chartdata,
options: {
scales: {
xAxes: [{
stacked: false,
ticks: {
beginAtZero:true,
mirror:false,
suggestedMin: 0,
suggestedMax: 100
}
}],
yAxes: [{
stacked: true
}]
},
scaleBeginAtZero : true,
// important here to use () =>
// to keep the scope of this
onClick: (e) => {
var actChart : Chart = this.charts[trialId];
var element =
actChart.getElementAtEvent(e);
}
}
}
);