You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Chart JS柱状图中取消Y轴自动缩放并手动设置1-10范围

解决Chart.js柱状图Y轴自动缩放问题,手动锁定1-10刻度范围

我懂你现在的困扰——Chart.js的自动缩放功能会根据你的数据极值调整Y轴范围,导致如果你的评分数据里没有1或者10,这两个刻度就会被砍掉,部分数据也可能因为超出自动计算的范围显示不出来。咱们直接改配置就能搞定:

你需要在Chart的初始化代码里添加options.scales.y配置,强制锁定Y轴的最小值和最大值,同时关闭自动缩放逻辑。具体修改如下:

<canvas id="bar-chart-grouped" width="800" height="350"></canvas>
<script>
new Chart(document.getElementById("bar-chart-grouped"), {
  type: 'bar',
  data: {
    labels: [{% for result in results %} "{{result.title}}", {% endfor %}],
    datasets: [
      // 这里替换成你实际的数据集配置
      {
        label: '项目评分',
        data: [{% for result in results %} {{result.score}}, {% endfor %}],
        backgroundColor: 'rgba(54, 162, 235, 0.6)'
      }
    ]
  },
  options: {
    scales: {
      y: {
        beginAtZero: false, // 禁用默认的从0开始的逻辑
        min: 1, // 手动设置Y轴最小值为1
        max: 10, // 手动设置Y轴最大值为10
        ticks: {
          stepSize: 1 // 让刻度每隔1显示一个,刚好覆盖1-10的所有评分
        }
      }
    }
  }
});
</script>

关键配置说明:

  • min: 1max: 10:直接固定Y轴的范围,完全绕过Chart.js的自动缩放算法,确保1-10的刻度始终显示
  • beginAtZero: false:默认情况下Chart.js会强制Y轴从0开始,必须把这个设为false,才能让Y轴从1启动
  • ticks.stepSize: 1:保证Y轴上会显示1、2、3…一直到10的每个整数刻度,完美匹配你的1-10评分体系

这样修改后,不管你的数据里有没有出现1或10的评分,Y轴都会稳定显示1到10的完整范围,所有数据点都会在这个范围内正常展示,再也不会因为自动缩放而“消失”啦。

内容的提问来源于stack exchange,提问作者Bob Singh

火山引擎 最新活动