Y ekseni için maksimum ve min değeri nasıl ayarlanır


Yanıtlar:


68

Ölçeği geçersiz kılmanız gerekir, şunu deneyin:

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 
    });
}

50
Bu cevabın chart.js'nin 1.x sürümleri ile ilgili olduğunu unutmayın scales. 2.x sürümlerindeki nesne oldukça farklıdır. Aşağıdaki @OferSegev yanıtına ve 2.x belgelerine bakın .
Boaz

1
V1.x için de belgeler var mı? @Boaz
Black Mamba

1
@IshanMahajan Eskiden vardı :) Artık bulamıyorum. Bunun iyi bir ayna olduğunu düşünüyorum: web-beta.archive.org/web/20150816192112/http://…
Boaz


61

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

Grafik JS v2.4.0

2017'nin 7 Şubat'taki https://github.com/jtblin/angular-chart.js adresindeki örneklerde gösterildiği gibi (bu, sık sık değişime maruz kaldığı için):

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

Bu, aşağıdaki gibi 5 y ekseni değeri ile sonuçlanır:

100
80
60
40
20
0

Bu işe şaşırdım çünkü düşündüm xAxesve seçeneklerin yAxesaltında iç içe olması gerekiyordu scales. Bu da Ofer Sergev'in doğru gibi görünen cevabından daha yeni.
claudekennilol

1
Grafiğim çok fazla gürültülü birkaç denklem içeriyor. Denklemlerden birinin en büyük değerine dayalı olarak maksimum değeri gerçek zamanlı olarak güncellemenin bir yolu var mı? Örneğin, maksimum değer + 100.
Martin Erlic

26

Bunu 2016 yılında yazarken, Grafik js 2.3.0 en sonuncusu. Biri nasıl değiştirebilir

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

15

Yukarıdaki cevaplar benim için işe yaramadı. Muhtemelen seçenek adları '11'den beri değiştirildi, ancak aşağıdakiler benim için hile yaptı:

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'de 'seçenekler' ile yapılandırıyorum.

Belgeleri okumalısınız: http://www.chartjs.org/docs/#scales-linear-scale


Teşekkürler. Bu benim için chart.js'nin v2.5 sürümünde çalıştı. Basit ve etkili.
Ionut Necula

2
Dokümanlar çok sinir bozucu ... Mevcut seçenekleri tahmin etmek için insanlara örnek aramak zorundayım.
Adrian P.

Birisi saf javascript kullanıyorsa, bu cevap doğrudur. Bunu kullanarak küçük bir örnek yazdım ve tam js kodumu aşağıda yayınladım.
Ishara Amarasekera

9

Ben 20 bir boşluk ile y ekseni 0 ila 100 değerleri görüntülemek için bir js yazdı.

Bu benim 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,
        }
      }]
    }
  }
});

Bu, web üzerinde görüntülenen grafiktir.

Şehirdeki araçların yüzdesi


9

> En İyi Çözüm


  "options":{
                    scales: {
                                yAxes: [{
                                    display: true,
                                    ticks: {
                                        suggestedMin: 0, //min
                                        suggestedMax: 100 //max 
                                    }
                                }]
                            }
                    }

7

Seçeneklerinizde scaleStartValue değerini ayarlamanız yeterlidir .

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

Bu belgelerine bakın burada .


Bu yanıt benim için daha iyidir, çünkü eğer 0 değilse, ölçek başlangıç ​​değerinin nasıl seçileceğini
açıklar

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

1
Bu kod soruyu cevaplayabilse de, soruyu neden ve / veya nasıl cevapladığı konusunda ek bağlam sağlamak uzun vadeli değerini önemli ölçüde artıracaktır. Lütfen biraz açıklama eklemek için cevabınızı düzenleyin .
Toby Speight

7

Bu Charts.js 2.0 içindir:

Bunlardan bazılarının çalışmamasının nedeni, grafiğinizi şu şekilde oluştururken seçeneklerinizi bildirmeniz gerektiğidir:

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

    });
})

Bunun için belgeler burada: http://www.chartjs.org/docs/#scales


Bu sürüm 2.0 ile gelen ChartJS değişiklikleri için adapte mi (Bence soru ve kabul bir yıl önce ChartJS 1.x ele ele). Kısaca açıklanırsa belki de bu cevap daha yararlı olacaktır. Belki sadece zaman varsa bu yorum hakkında yorum. Teşekkürler.
Seyreltici

3

1.1.1 ile, ölçeği 0.0 ile 1.0 arasında düzeltmek için aşağıdakileri kullandım:

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

1

Benim durumumda, yaxis kenelerinde bir geri arama kullandım, değerlerim yüzde ve% 100'e ulaştığında noktayı göstermiyor, bunu kullandım:

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

Ve iyi çalıştı.


0

Yukarıdaki önerilerin hiçbiri charts.js 2.1.4 ile bana yardımcı olmadığından, veri kümesi dizime 0 değerini ekleyerek çözdüm (ancak ekstra etiket yok):

statsData.push(0);

[...]

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

0

Düz laboratuvar şablonunun eski bir sürümünü, emin olmadığım chart.js'nin v1.x'ini kullanan birden fazla projemde kullanıyordum. . Yukarıda bahsedilen(bardata,options) benim için çalışmıyor.

İşte sürüm 1.x için hack

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

Şununla değiştir:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.