Y 축의 최대 값과 최소값을 설정하는 방법


176

http://www.chartjs.org/ 에서 꺾은 선형 차트를 사용하고 있습니다 . 여기에 이미지 설명을 입력하십시오

Y 축의 최대 값 (130) 및 최소값 (60)이 자동으로 선택되는 것을 볼 수 있듯이 최대 값 = 500 및 최소값 = 0을 원합니다. 이게 가능해?

답변:


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
이 답변은 1.x 버전의 chart.js와 관련이 있습니다. 2.x 버전의 scales객체는 상당히 다릅니다. 아래 @OferSegev 답변 및 여기 2.x 설명서를 참조하십시오 .
보아스

1
잘 @Boaz로 v1.x에 대한이 문서가
블랙 맘바

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
또한 참조 min, maxstepsize의 속성 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입니다.
Martin 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

2
문서가 너무 실망 스럽습니다 ... 사용 가능한 옵션을 추측하기 위해 사람들의 예를 검색해야합니다.
Adrian P.

누군가가 순수한 자바 스크립트를 사용하고 있다면이 대답이 옳습니다. 나는 이것을 사용하여 작은 예제를 작성했고 아래에 완전한 js 코드를 게시했습니다.
Ishara Amarasekera 5

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이 아닌 경우 스케일 시작 값을 선택하는 방법을 명시하므로 나에게 더 좋습니다.
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의 변경 사항에 적합합니까? 아마도이 설명이 짧게 설명되면 더 도움이 될 것입니다. 시간이 허락한다면이 의견에 대해 의견을 말하십시오. 감사.
Dilettant

3

1.1.1에서는 다음을 사용하여 0.0과 1.0 사이의 배율을 수정했습니다.

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

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

나는 확실하지 않은 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.