如何设置Y轴的最大值和最小值


Answers:


68

您必须重写比例,请尝试以下操作:

window.onload = function(){
    var ctx = document.getElementById("canvas").getContext("2d");
    window.myLine = new Chart(ctx).Line(lineChartData, {
        scaleOverride : true,
        scaleSteps : 10,
        scaleStepWidth : 50,
        scaleStartValue : 0 
    });
}

49
请注意,此答案与chart.js的1.x版本有关。2.x版本中的scales对象完全不同。请参阅下面的@OferSegev答案和此处2.x文档
波阿斯

1
还有v1.x的文档吗@Boaz
Black Mamba

1
@IshanMahajan曾经有:)我似乎再也找不到它了。我认为这是一个很好的镜子:web-beta.archive.org/web/20150816192112/http
Boaz

264

对于chart.js V2(测试版),请使用:

var options = {
    scales: {
        yAxes: [{
            display: true,
            ticks: {
                suggestedMin: 0,    // minimum will be 0, unless there is a lower value.
                // OR //
                beginAtZero: true   // minimum value will be 0.
            }
        }]
    }
};

有关更多详细信息,请参见关于线性轴配置的chart.js文档


33
也看到了minmaxstepsize该属性ticks命名空间
拉尔夫·卡拉威

17
suggestedMax最小最高价值
Finesse

60

var config = {
            type: 'line',
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [{
                        label: "My First dataset",
                        data: [10, 80, 56, 60, 6, 45, 15],
                        fill: false,
                        backgroundColor: "#eebcde ",
                        borderColor: "#eebcde",
                        borderCapStyle: 'butt',
                        borderDash: [5, 5],
                    }]
            },
            options: {
                responsive: true,
                legend: {
                    position: 'bottom',
                },
                hover: {
                    mode: 'label'
                },
                scales: {
                    xAxes: [{
                            display: true,
                            scaleLabel: {
                                display: true,
                                labelString: 'Month'
                            }
                        }],
                    yAxes: [{
                            display: true,
                            ticks: {
                                beginAtZero: true,
                                steps: 10,
                                stepValue: 5,
                                max: 100
                            }
                        }]
                },
                title: {
                    display: true,
                    text: 'Chart.js Line Chart - Legend'
                }
            }
        };

        var ctx = document.getElementById("canvas").getContext("2d");
       new Chart(ctx, config);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.1/Chart.bundle.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <canvas id="canvas"></canvas>
</body>


在2.4.0中工作得很好
Avinash

39

ChartJS v2.4.0

如2017年2月7日https://github.com/jtblin/angular-chart.js上的示例所示(因为这似乎经常更改):

var options = {
    yAxes: [{
        ticks: {
            min: 0,
            max: 100,
            stepSize: 20
        }
    }]
}

这样将得到5个y轴值,例如:

100
80
60
40
20
0

我对此功能感到惊讶,因为我认为xAxesyAxes应该嵌套scales在选项中。加上这比Ofer Sergev的答案似乎是正确的要新,这也令人惊讶。
claudekennilol

1
我的图表包含几个带有大量噪声的方程。有没有一种方法可以根据其中一个方程式的最大值实时更新最大值?例如,最大值+ 100
马丁Erlic

26

在2016年编写此代码时,Chart js 2.3.0是最新版本。这是一个可以改变它的方法

var options = {
    scales: {
        yAxes: [{
            display: true,
            stacked: true,
            ticks: {
                min: 0, // minimum value
                max: 10 // maximum value
            }
        }]
    }
};

15

上述答案对我不起作用。自11年以来,选项名称可能已更改,但以下技巧对我来说很有效:

ChartJsProvider.setOptions
  scaleBeginAtZero: true

13
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx ,{
          type: 'line',
          data: yourData,
          options: {
            scales: {
                yAxes: [{
                    ticks: {
                        beginAtZero:true,
                        min: 0,
                        max: 500    
                    }
                  }]
               }
            }
});

我在v2中配置了“选项”。

您应该阅读文档:http : //www.chartjs.org/docs/#scales-linear-scale


谢谢。这个对我来说适用于chart.js v2.5。简单有效。
Ionut Necula '17

2
该文档是如此令人沮丧...我必须搜索人们的例子来猜测可用的选项。
Adrian P.

如果有人使用纯JavaScript,则此答案是正确的。我使用此示例编写了一个小示例,并在下面发布了完整的js代码。
Ishara Amarasekera '19

9

我写了一个js在y轴上显示从0到100的值,间隙为20。

这是我的script.js

//x-axis
var vehicles = ["Trucks", "Cars", "Bikes", "Jeeps"];

//The percentage of vehicles of each type
var percentage = [41, 76, 29, 50];

var ctx = document.getElementById("barChart");
var lineChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: vehicles,
    datasets: [{
      data: percentage,
      label: "Percentage of vehicles",
      backgroundColor: "#3e95cd",
      fill: false
    }]
  },
  options: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true,
          min: 0,
          max: 100,
          stepSize: 20,
        }
      }]
    }
  }
});

这是显示在网上的图表。

城镇车辆百分比



7

只需在选项中设置scaleStartValue的值即可

var options = {
   // ....
   scaleStartValue: 0,
}

请参阅此处的文档。


这个答案对我来说更好,因为它明确了如何选择刻度起始值(如果不为0)
Pechou

7
yAxes: [{
    display: true,
    ticks: {
        beginAtZero: true,
        steps:10,
        stepValue:5,
        max:100
    }
}]

1
尽管此代码可以回答问题,但是提供有关为什么和/或如何回答问题的其他上下文将大大提高其长期价值。请编辑您的答案以添加一些解释。
Toby Speight,

7

这适用于Charts.js 2.0:

其中一些不起作用的原因是因为在创建图表时应声明您的选项,如下所示:

$(function () {
    var ctxLine = document.getElementById("myLineChart");
    var myLineChart = new Chart(ctxLine, {
        type: 'line',
        data: dataLine,
        options: {
            scales: {
                yAxes: [{
                    ticks: {
                        min: 0,
                        beginAtZero: true
                    }
                }]
            }
        }

    });
})

此处的文档位于:http : //www.chartjs.org/docs/#scales


这是否适应了2.0版随附的ChartJS的更改(我认为一年前关于ChartJS 1.x的问题和已接受的答案)。如果对此进行简短说明,则此答案甚至可能更有用。如果时间允许,也许只是对此评论发表评论。谢谢。
Dilettant


1

就我而言,我在yaxis刻度中使用了一个回调,我的值以百分比表示,当达到100%时它不显示点,我使用了这个:

      yAxes: [{
                   ticks: {
                       beginAtZero: true,
                       steps: 10,
                       stepValue: 5,
                       max: 100.1,
                       callback: function(value, index, values) {
                           if (value !== 100.1) {
                               return values[index]
                           }
                       }
                   }
               }],

而且效果很好。


0

由于上述建议均无助于Charts.js 2.1.4,因此我通过在数据集数组中添加值0(但没有额外的标签)解决了该问题:

statsData.push(0);

[...]

var myChart = new Chart(ctx, {
    type: 'horizontalBar',
    data: {
        datasets: [{
            data: statsData,
[...]

0

我在我的多个项目中使用了旧版本的Flat Lab模板,这些项目正在使用chart.js的v1.x版本,但我不确定。由于我已经有多个项目在使用它,所以我无法更新到v2.x版本。以上提及的(bardata,options)不适用于我。

这是1.x版的hack

calculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);

替换为:

calculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,1,valueBounds.maxValue,0,labelTemplateString);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.