Décalage vertical des étiquettes d'axe x
Le moyen le plus simple consiste à 1. ajouter des espaces à vos étiquettes x. Pour ce faire, vous pouvez étendre votre type de graphique et remplacer votre fonction d’initialisation (augmentez de 30 à quelque chose de plus grand si vos étiquettes sont longues au début).
initialize: function(data){
data.labels.forEach(function(item, index) {
data.labels[index] += Array(Math.max(30 - item.length, 0)).join(" ");
})
Chart.types.Bar.prototype.initialize.apply(this, arguments);
},
Edit: Comme indiqué dans les commentaires, cela provoque également un décalage horizontal et l'étiquette ne s'aligne plus avec les marqueurs de l'axe des x.
Etant donné que les étiquettes des axes x et x sont dessinées dans une seule fonction et que vous n'avez aucune autre variable avec laquelle vous pouvez jouer (en toute sécurité), cela signifie que vous devrez changer la fonction d'affichage de l'échelle réelle.
Cherchez un ctx.translate vers la fin de la fonction draw et changez le en
ctx.translate(xPos, (isRotated) ? this.endPoint + 22 : this.endPoint + 18);
Vous devrez également ajuster le point final (ce qui détermine les limites de y) de manière à ce que le décalage en y supplémentaire ne provoque pas le débordement des étiquettes dans le graphique (recherchez la ligne qui l'ajuste dans le remplacement du tracé pour 2.).
Laissant un espace vide du côté droit
Pour faire 2, vous remplacez votre fonction de dessin (dans votre graphique étendu) et changez xScalePaddingRight. Cependant, puisque cela n’affecte pas vos lignes de grille horizontales, vous devez superposer un rectangle plein une fois votre dessin terminé. Votre fonction de dessin complète ressemblerait à ceci
draw: function(){
// this line is for 1.
if (!this.scale.done) {
this.scale.endPoint -= 20
// we should do this only once
this.scale.done = true;
}
var xScalePaddingRight = 120
this.scale.xScalePaddingRight = xScalePaddingRight
Chart.types.Bar.prototype.draw.apply(this, arguments);
this.chart.ctx.fillStyle="#FFF";
this.chart.ctx.fillRect(this.chart.canvas.width - xScalePaddingRight, 0, xScalePaddingRight, this.chart.canvas.height);
}
Violon original - https://jsfiddle.net/gvdmxc5t/
Fiddle avec la fonction de dessin d’échelle modifiée - https://jsfiddle.net/xgc6a77a/ (j’ai désactivé l’animation dans celle-ci afin que le point final ne soit décalé qu’une seule fois, mais vous pouvez simplement le coder en dur, ou ajouter de code pour qu'il ne soit fait qu'une fois)
L'option 'tickMarkLength' étend les lignes de la grille à l'extérieur du graphique et abaisse les graduations.
xAxes: [
{
gridLines: {
tickMarkLength: 15
},
}
]
utilisez ceci pour chartjs 2.0
scales: {
xAxes: [{
barPercentage: 0.9,
categoryPercentage: 0.55
}]