Comment définir les valeurs max et min pour l'axe Y

177

J'utilise un graphique linéaire de http://www.chartjs.org/ entrez la description de l'image ici

Comme vous pouvez le voir, la valeur maximale (130) et la valeur minimale (60) pour l'axe Y sont choisies automatiquement, je veux une valeur maximale = 500 et une valeur minimale = 0. Est-ce possible?

Rajendra Thorat
la source

Réponses:

68

Vous devez remplacer l'échelle, essayez ceci:

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 
    });
}
Mousa Dirksz
la source
50
Notez que cette réponse est pertinente pour les versions 1.x de chart.js. L' scalesobjet dans les versions 2.x est assez différent. Voir la réponse @OferSegev ci-dessous et la documentation 2.x ici .
Boaz
1
Existe-t-il de la documentation pour la v1.x également @Boaz
Black Mamba
1
@IshanMahajan Il y en avait :) Je n'arrive plus à le trouver. Je pense que c'est un bon miroir: web-beta.archive.org/web/20150816192112/http
Boaz
264

Pour chart.js V2 (beta), utilisez:

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.
            }
        }]
    }
};

Voir la documentation de chart.js sur la configuration des axes linéaires pour plus de détails.

Ofer Segev
la source
33
voir aussi les min, maxet les stepsizeattributs de l' ticksespace de noms
Ralph Callaway
17
suggestedMaxpour la valeur maximale minimale
Finesse
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>

Ramesh
la source
A bien fonctionné en 2.4.0
Avinash
39

ChartJS v2.4.0

Comme le montrent les exemples sur https://github.com/jtblin/angular-chart.js le 7 février 2017 (car cela semble être sujet à de fréquents changements):

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

Cela se traduira par 5 valeurs de l'axe des y en tant que telles:

100
80
60
40
20
0
Tom Nijs
la source
Je suis surpris que cela fonctionne parce que je pensais que xAxeset que je devais yAxesêtre imbriqué scalesdans les options. Le fait que cela soit plus récent que la réponse d'Ofer Sergev qui semble correcte est également surprenant.
claudekennilol
1
Mon graphique comporte plusieurs équations avec beaucoup de bruit. Existe-t-il un moyen de mettre à jour la valeur maximale en temps réel en fonction de la plus grande valeur de l'une des équations? Par exemple, valeur maximale + 100.
Martin Erlic
26

J'ai écrit ceci en 2016 alors que Chart js 2.3.0 est le dernier. Voici comment on peut le changer

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

Les réponses ci-dessus n'ont pas fonctionné pour moi. Peut-être que les noms des options ont été modifiés depuis '11, mais ce qui suit a fait l'affaire pour moi:

ChartJsProvider.setOptions
  scaleBeginAtZero: true
troelskn
la source
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    
                    }
                  }]
               }
            }
});

Je configure avec des «options» dans la v2.

Vous devriez lire la documentation: http://www.chartjs.org/docs/#scales-linear-scale

David Martinez Urrea
la source
Merci. Celui-ci a fonctionné pour moi sur la v2.5 de chart.js. Simple et efficace.
Ionut Necula
2
Les documents sont tellement frustrants ... Je dois rechercher des exemples de personnes pour deviner les options disponibles.
Adrian P.
Si quelqu'un utilise du javascript pur, cette réponse est la bonne. J'ai écrit un petit exemple en utilisant ceci et j'ai posté mon code js complet ci-dessous.
Ishara Amarasekera
9

J'ai écrit un js pour afficher les valeurs de 0 à 100 sur l'axe des y avec un écart de 20.

Ceci est mon 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,
        }
      }]
    }
  }
});

Il s'agit du graphique affiché sur le Web.

Pourcentage de véhicules dans la ville

Ishara Amarasekera
la source
9

> Meilleure solution


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

Définissez simplement la valeur de scaleStartValue dans vos options.

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

Consultez la documentation à ce sujet ici .

Rome
la source
Cette réponse est meilleure pour moi car elle explique comment choisir la valeur de départ de l'échelle, sinon 0
Pechou
7
yAxes: [{
    display: true,
    ticks: {
        beginAtZero: true,
        steps:10,
        stepValue:5,
        max:100
    }
}]
Ramesh
la source
1
Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire concernant la raison et / ou la manière dont il répond à la question améliorerait considérablement sa valeur à long terme. Veuillez modifier votre réponse pour ajouter des explications.
Toby Speight
7

C'est pour Charts.js 2.0:

La raison pour laquelle certains d'entre eux ne fonctionnent pas est que vous devez déclarer vos options lorsque vous créez votre graphique comme suit:

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

    });
})

La documentation à ce sujet est ici: http://www.chartjs.org/docs/#scales

JPeG
la source
Est-ce une adaptation aux changements de ChartJS fournis avec la version 2.0 (je pense que la question et la réponse acceptée il y a un an concernaient ChartJS 1.x). Peut-être que cette réponse serait encore plus utile si cela était brièvement expliqué. Peut-être juste commenter ce commentaire si le temps le permet. Merci.
Dilettant le
3

Avec 1.1.1, j'ai utilisé ce qui suit pour fixer l'échelle entre 0,0 et 1,0:

var options = {
    scaleOverride: true,
    scaleStartValue: 0,
    scaleSteps: 10,
    scaleStepWidth: 0.1
}
Philippe Riand
la source
1

Dans mon cas, j'ai utilisé un rappel dans les ticks yaxis, mes valeurs sont en pourcentage et quand il atteint 100%, il n'affiche pas le point, j'ai utilisé ceci:

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

Et cela a bien fonctionné.

AZIIZ Farhat
la source
0

Comme aucune des suggestions ci-dessus ne m'a aidé avec charts.js 2.1.4, je l'ai résolu en ajoutant la valeur 0 à mon tableau d'ensemble de données (mais pas d'étiquette supplémentaire):

statsData.push(0);

[...]

var myChart = new Chart(ctx, {
    type: 'horizontalBar',
    data: {
        datasets: [{
            data: statsData,
[...]
Jule sceptique
la source
0

J'utilisais une ancienne version du modèle Flat Lab dans plusieurs de mes projets qui utilisaient la v1.x de chart.js dont je ne suis pas sûr.Je ne pouvais pas mettre à jour vers la v2.x car j'avais déjà plusieurs projets en cours d'exécution. . Le susmentionné(bardata,options) ne fonctionnait pas pour moi.

Voici donc le hack pour la version 1.x

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

Remplacez-le par:

calculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,1,valueBounds.maxValue,0,labelTemplateString);
Black Mamba
la source
0

Les graphiques ont une valeur «min» et «max». Documentation sur ce lien

https://www.chartjs.org/docs/latest/axes/cartesian/linear.html

Samuel Santaera
la source
4
Cette réponse n'ajoute aucune information à cette question posée il y a 4 ans. De plus, les liens peuvent disparaître, veuillez donc inclure l'essentiel du lien dans votre message.
déformé