Y軸の最大値と最小値を設定する方法


回答:


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のドキュメントを参照してください
Boaz

1
@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、2017年

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

私は思ったので、私はこの作品を驚いているxAxesと、yAxes下にネストされることになったscalesオプションで。これに加えて、正しいと思われるOfer Sergevの回答よりも新しいのも驚くべきことです。
claudekennilol

1
私のグラフには、ノイズの多いいくつかの方程式が含まれています。方程式の1つの最大値に基づいてリアルタイムで最大値を更新する方法はありますか?例えば、最大値+ 100
マーティンERLIC

26

Chart js 2.3.0が最新のバージョンである2016年にこれを書いています。これを変更する方法は次のとおりです

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

2
ドキュメントはとてもイライラしています...私は人々の例を検索して利用可能なオプションを推測する必要があります。
エイドリアンP.

誰かが純粋なJavaScriptを使用している場合、この答えは正しいものです。私はこれを使用して小さな例を書き、完全なjsコードを以下に投稿しました。
Ishara Amarasekera

9

ギャップ20でy軸に0から100までの値を表示するjsを書きました。

これは私の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で

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

1
このコードは質問に答えることがありますが、なぜまたはどのように質問に答えるについて追加のコンテキストを提供すると、長期的な価値が大幅に向上します。回答を編集して説明を追加してください。
Toby Speight 2016年

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の変更に適応していますか(1年前にChartJS 1.xを扱った質問と受け入れられた回答だと思います)。たぶん、これが簡単に説明されれば、この回答はさらに役立つでしょう。時間が許せば、このコメントにコメントしてください。ありがとう。
Dilettant

3

1.1.1では、以下を使用して0.0〜1.0のスケールを修正しました。

var options = {
    scaleOverride: true,
    scaleStartValue: 0,
    scaleSteps: 10,
    scaleStepWidth: 0.1
}

1

私の場合、yaxis ticksでコールバックを使用しました。値はパーセント単位で、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

不明なchart.jsのv1.xを使用している複数のプロジェクトで古いバージョンのFlat Labテンプレートを使用していました。すでに複数のプロジェクトを使用していたため、v2.xに更新できませんでした。上記(bardata,options)は私のために働いていませんでした。

これがバージョン1.xのハックです。

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

それを次のものに置き換えます。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.