J'utilise un graphique de jauge basé sur ( Chartjs-tsgauge ). Je veux définir des couleurs d'arrière-plan pour le graphique distinctes des limites de jauge. Le problème avec la façon dont Charts.JS rend l'arrière-plan parce que le plugin que j'ai utilisé n'a pas de code sur les arrière-plans. Par exemple, j'ai une jauge avec des limites [0, 20, 40, 60, 80, 100]
. Je veux passer au [0-30]
vert, [30-70]
au jaune et [70-100]
au rouge. Code actuel: CodePEN
Voici mes options actuelles.
var ctx = document.getElementById("canvas").getContext("2d");
new Chart(ctx, {
type: "tsgauge",
data: {
datasets: [{
backgroundColor: ["#0fdc63", "#fd9704", "#ff7143"],
borderWidth: 0,
gaugeData: {
value: 7777,
valueColor: "#ff7143"
},
gaugeLimits: [0, 3000, 7000, 10000]
}]
},
options: {
events: [],
showMarkers: true
}
});
Et voici mon approche pour définir les couleurs d'arrière-plan.
new Chart(ctx, {
type: "tsgauge",
data: {
datasets: [{
backgroundColor: ["#0fdc63", "#fd9704", "#ff7143"],
borderWidth: 0,
gaugeData: {
value: 50,
valueColor: "#ff7143"
},
gaugeLimits: [0, 20, 40, 60, 80, 100],
gaugeColors: [{
min: 0,
max: 30,
color: ""
}, {
min: 30,
max: 70,
color: ""
},{
min:70,
max:100,
color: ""
}]
}]
},
options: {
events: [],
showMarkers: true
}
});
Correspond actuellement aux Chart.JS
couleurs avec des limites à . J'ai également pensé dessiner un autre tableau factice avec les couleurs souhaitées et le placer au-dessus du vrai tableau, mais cela semble une façon douteuse de le faire.0
i
0
i
la source
Réponses:
Solution précédente
Vous pouvez modifier un peu votre jeu de données pour y parvenir:
Étant donné que vous
gagueLimits
êtes actuellement divisé en plusieurs catégories20
, vous ne pouvez donc pas accéder à la limite de 30,Donc, ce que j'ai fait ici est élaboré
guageLimits
sur une plage fractionnée de10
et30
est maintenant accessible, tout comme70
,Maintenant, à propos des couleurs, chacune de vos
guageLimits
nécessite une couleur dans lebackgroundColor
tableau, je les ai définies en conséquence, vérifiez le tableau ci-dessus. Puisqu'aucune des couleurs correspondantes ne peut être vide, vous devrez peut-être utiliser la même couleur jusqu'à ce que vous atteigniez la gamme de couleurs suivante.Solution mise à jour
Vos exigences sont maintenant remplies:
Maintenant, techniquement, si vous souhaitez définir une plage de couleurs à un point spécifique, vous devez avoir cette valeur sur le
gaugeLimits
tableau, de sorte que votregaugeLimits
tableau réduit devient maintenant comme ceci:Eh bien, non, vous pouvez définir les couleurs en conséquence puisque vous avez les points spécifiés dans le tableau. Par conséquent, le
backgroundColor
tableau est:Maintenant, le dernier tour
Vous devez toujours masquer les 30 et 70 de l'échelle, j'ai essayé de basculer le
showMarkers
dans votre code, on dirait qu'il active ou désactive entièrement l'échelle des nombres visibles, j'ai essayé de fournir un tableau de chaînes, mais il n'accepte queboolean
Chartjs-tsgauge Ne fournit pas beaucoup de documentation sur les options disponibles, donc je me suis glissé dans le code et j'ai trouvé
markerFormatFn
Ce qu'il fait, c'est prendre une fonction comme paramètre et vous pouvez fournir une fonction indiquant quoi faire avec chacun de vos éléments marqueurs.
Donc, j'ai eu l'idée de fournir une fonction pour n'afficher que les nombres qui sont divisibles par 20 sans aucun reste, sinon retournez une chaîne vide, la voici:
Vérifiez l'extrait:
la source