在Chart.js中将Y轴值从实数更改为整数

Rac*_*naa 51 html javascript charts chart.js

我有一个图表,我想使用Chart.js包含在我的网站中.在Y轴上,它给出了实数而不是整数.如何将数字更改为整数?

这是我现在拥有的图片:

当前图表与实数

这是代码:

var lineChartData = {

    labels : ["2013/04/01","2013/03/31", "2013/03/30", "2013/03/29", "2013/03/28","2013/03/27", "2013/03/26"],

    datasets : [
        {
            fillColor : "rgba(151,187,205,0.5)",
            strokeColor : "rgba(151,187,205,1)",
            pointColor : "rgba(151,187,205,1)",
            pointStrokeColor : "#fff",
            data : ["0", "2","1", "0", "1","0","1"]
        }
    ]

}

var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Bar(lineChartData);
Run Code Online (Sandbox Code Playgroud)

Sae*_*eed 109

我在新版本中以这种方式处理它:

new Chart(ctx, {
  type: 'bar',
  data: chartData,
  options: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true,
          callback: function(value) {if (value % 1 === 0) {return value;}}
        }
      }]
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢队友!工作就像一个魅力.我想知道为什么这不是最好的答案. (4认同)

Mew*_*wel 52

试试这个,其中max是数据的最高值.

var steps = 3;
new Chart(ctx).Bar(plotData, {
    scaleOverride: true,
    scaleSteps: steps,
    scaleStepWidth: Math.ceil(max / steps),
    scaleStartValue: 0
});
Run Code Online (Sandbox Code Playgroud)


DBS*_*DBS 41

在使用Chart.js的新版本2时,我无法让现有的答案为我工作,所以这是我在V2中解决这个问题所发现的:

new Chart(ctx, {type: 'bar', data: barChartData,
  options:{ 
    scales: {
      yAxes: [{
        ticks: {
          stepSize: 1
        }
      }]
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将显示y轴上的所有整数.如果图形从0到300运行,则将显示所有301个整数和网格线. (6认同)

Ben*_*rth 27

我现在知道这是一个老问题,但在当前版本 (v2.9.3) 中,您只需将 y 轴刻度的精度设置为零即可获得整数:

options: {  
    scales: {
        yAxes: [{
            ticks: {
                precision: 0
            }
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,因为这不需要额外的考虑(找到最大值、声明步骤等) (4认同)

小智 19

正如 Ben Bloodworth 上面提到的,更简单的方法是添加选项(精度:0)。

目前在 3.7.1 版本中运行良好

 options: {
            scales: {
                y: {
                    ticks: {
                        precision: 0
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)


Raú*_*año 8

检查Chart.js文档,在全局配置部分中:

// Boolean - 即使绘图空间有scaleIntegersOnly:true,缩放是否应该坚持整数,而不是浮点数


MRo*_*ues 7

如果你想以不同于0的数字开头,你必须考虑到这一点:

var step  = 5;
var max   = 90
var start = 40;
new Chart(income).Bar(barData, {
    scaleOverride: true,
    scaleSteps: Math.ceil((max-start)/step),
    scaleStepWidth: step,
    scaleStartValue: start
});
Run Code Online (Sandbox Code Playgroud)


小智 5

需要注意的是,Chart.js 有不同版本,并且它们有不同的选项对象。在版本 3 及更高版本中,x 轴和 y 轴是一个对象,而在版本 3 以下的版本中,它们被定义为数组。例如,
对于版本 3 及更高版本,

 options: {
        scales: {
            y: {
                ticks: {
                    precision: 0
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

对于版本 3 及以下版本,

options: {  
    scales: {
        yAxes: [{
            ticks: {
                precision: 0
            }
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

另请注意,y和分别x变为yAxesxAxex