Je voudrais dessiner un graphique en courbes par Chartjs avec des données par jour, mais étiquette par mois.
Si l'étiquette est affichée par jour, il y a beaucoup de points. Donc, j'aimerais afficher les étiquettes par mois plutôt que par jour. Par exemple:
Quelqu'un pourrait m'apprendre comment faire ça?
Je vous remercie.
Configurez simplement votre propriété xAxes-> time comme suit:
unité: 'mois'
xAxes: [{
type: 'time',
position: 'bottom',
time: {
displayFormats: {'day': 'MM/YY'},
tooltipFormat: 'DD/MM/YY',
unit: 'month',
}
}],
Cette question est assez ancienne maintenant, mais j'ai trouvé une solution de contournement utilisant la fonctionnalité afterTickToLabelConversion
. J'ai formaté la date et n'ai laissé qu'une étiquette par mois (le reste des étiquettes est transformé en guillemets vides).
Voici l'extrait à mettre dans votre option graphique:
scales: {
xAxes: [{
type: 'time',
position: 'bottom',
time: {
displayFormats: {
'day': 'MM/YY'
},
tooltipFormat: 'DD/MM/YY',
unit: 'day',
},
// leave only one label per month
afterTickToLabelConversion: function (data) {
var xLabels = data.ticks;
var oldLabel = "";
xLabels.forEach(function (labels, i) {
if(xLabels[i] == oldLabel){
xLabels[i] = "";
} else {
oldLabel = xLabels[i];
}
});
}
}]
}
Le tableau labels
et le tableau data
doivent correspondre. Par conséquent, vous devez calculer vos valeurs afin qu'elles soient conservées dans un tableau de données afin de correspondre à vos étiquettes
data: {
labels: ["Jan", "Feb", "March", ...],
datasets: [{
label: '# of Votes',
data: [01, 02, 03, ...],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
...
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
...
],
borderWidth: 1
}]
},
Est-ce que cela résout votre doute?