1

我使用vue-chartjs作为 chartjs 的包装。我有一个带有随机数据的简单折线图,但坚持如何设置要在图表的 y 轴上显示的固定值。目前我有0-100的随机数据。现在,我想要实现的只是0, 50, 100在 y 轴上显示,无论随机值是从0-100.

示例脚本

putData: function () {
    this.datacollection = {
        labels: ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'],
        datasets: [{
            lineTension: 0,
            borderWidth: 1,
            borderColor: '#F2A727',
            pointBackgroundColor:[ '#fff', '#fff', '#fff', '#fff', '#fff', '#F2A727'],
            backgroundColor: 'transparent',
            data: [this.getRandomInt(), this.getRandomInt(), this.getRandomInt(), this.getRandomInt(), this.getRandomInt(), this.getRandomInt()]
        }]
    }
},

getRandomInt: function () {
    return Math.floor(Math.random() * (95)) + 5
}

任何帮助将非常感激。

4

2 回答 2

5

为此,您需要在图表选项中为 y 轴刻度设置stepSize: 50和:maxTicksLimit: 3

scales: {
   yAxes: [{
      ticks: {
         stepSize: 50,
         maxTicksLimit: 3
      }
   }]
}
于 2017-07-13T12:32:09.257 回答
1

上面的答案是正确的。对于那些有兴趣的人,我发布了最新版本 Chart.js 的代码

更新到 Chart.js v3.2.0(不向后兼容v2.xx

如果您的随机数据值都在接近 50 的中间范围内,为了避免自动缩放,请执行以下操作:

添加min: 0and max: 100,因此您强制图表准确显示包括0在内的这 3 个刻度,因此maxTicksLimit: 3

100

50

0

<script>
   // ...

options: {
   scales: {
      y: {
         min: 0,
         max: 150,
         ticks: {
            stepSize: 50,
            maxTicksLimit: 3
         }
      }
   }
};

   // ...
</script>

来源:https ://www.chartjs.org/docs/latest/axes/#tick-configuration

(请注意,在新版本v3.xx min: 0中,max: 100它现在位于刻度对象之外,而在v2.xx中,它曾经位于刻度对象内部)。

于 2021-04-27T21:30:16.557 回答