95 votes

Sauter les points décimaux sur l'axe des y dans chartJS

J'utilise ce bibliothèque pour dessiner des graphiques dans mon application web. Le problème est que j'ai des points décimaux dans mon axe des ordonnées. Vous pouvez le voir dans l'image ci-dessous enter image description here

Existe-t-il un moyen de le restreindre aux seuls chiffres ?

Voici mon code

var matches = $("#matches").get(0).getContext("2d");

var data = {
        labels: labelsFromCurrentDateTillLastWeek,
        datasets: [
            {
                label: "Last Weeks Matches",
                fillColor: "rgba(220,220,220,0.2)",
                strokeColor: "rgba(220,220,220,1)",
                pointColor: "rgba(220,220,220,1)",
                pointStrokeColor: "#fff",
                pointHighlightFill: "#fff",
                pointHighlightStroke: "rgba(220,220,220,1)",
                data: result
            }
        ]
    };

    var options = {
        scaleLabel: function (label) {
            return Math.round(label.value);
        }
    };

    var myLineChart = new Chart(matches, {
        type: 'bar',
        data: data,
        options: options

    })

148voto

Quince Points 9567

Mise à jour : veuillez voir une réponse mise à jour de @DreamTeK qui montre comment cela peut maintenant être fait dans le cadre de l'API Chartjs. https://stackoverflow.com/a/54006487/2737978


dans chartjs 2.x vous pouvez passer une option pour un userCallback au champ de tic-tac de l'axe des y. Vous pouvez ainsi vérifier si l'étiquette est un nombre entier.

voici un exemple

 options = {
     scales: {
         yAxes: [{
             ticks: {
                 beginAtZero: true,
                 userCallback: function(label, index, labels) {
                     // when the floored value is the same as the value we have a whole number
                     if (Math.floor(label) === label) {
                         return label;
                     }

                 },
             }
         }],
     },
 }

exemple de violon

3 votes

Existe-t-il un guide documentaire COMPLET pour ces tableaux ? Ce site chartjs.org/docs/latest/charts/line.html est détaillée mais ne dit rien sur beginAtZero par exemple.

0 votes

La meilleure solution. Pas de bogue, pas de problème

2 votes

109voto

Obsidian Points 2211

Mise à jour de 2019

Cela peut maintenant être facilement réalisé en utilisant le precision option :

ticks: {
  precision:0
}

Conformément à la documentation .

Si elle est définie et que stepSize n'est pas spécifié, la taille de l'étape sera arrondie à ce nombre de décimales.

EXEMPLE

options: {
  scale: {
    ticks: {
      precision: 0
    }
  }
}

OU (axe unique)

options: {
  scales: {
    xAxes: [{
      ticks: {
        precision: 0
      }
    }]
  }
}

33voto

John Rix Points 706

Une autre solution consiste à utiliser l'option fixedStepSize comme suit :

options = {
    scales: {
        yAxes: [{
            ticks: {
                fixedStepSize: 1
            }
        }],
    },
};

10 votes

Ce site devrait être aussi simple. Malheureusement, ce paramètre empêche de sauter certains points lorsqu'il y a beaucoup de données. Par exemple, lorsque les valeurs sont comprises entre 0 et 1000, chart.js affichera tous les entiers de 0 à 1000 au lieu d'afficher par exemple 0, 100, 200 etc.

0 votes

Bon à savoir. Donc, en substance, cela fonctionne lorsque la gamme de valeurs est limitée à ce qui peut être affiché raisonnablement dans l'espace disponible.

2 votes

Nous utilisons actuellement la version 2.7 et 'fixedStepSize' devrait être 'stepSize', voir la documentation : chartjs.org/docs/latest/axes/radial/ . Il ne fonctionne pas bien non plus si l'on applique le formatage des devises.

23voto

Mohammad Points 714

Dans la dernière version, cette option est devenue

scales: {
  yAxes: [{
    ticks: {
      stepSize: 1,
      beginAtZero: true,
    },
  }],
},

4voto

Ahmad Hamed Points 21

La solution la plus simple et la plus directe consiste à ajouter ces configurations à votre objet d'options :

    scales: {
  yAxes: [
    {
      ticks: {
        precision: 0,
        beginAtZero: true,
      },
    },
  ],
},

et définissez les Axes (Dans mon cas c'est les yAxes) en fonction de vos axes avec des fractions

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X