Estoy usando un gráfico de indicadores basado en ( Chartjs-tsgauge ). Quiero establecer los colores de fondo para el gráfico por separado de los límites del medidor. El problema con cómo Charts.JS representa el fondo porque el complemento que utilicé no tiene un código sobre fondos. Por ejemplo, tengo un indicador con límites [0, 20, 40, 60, 80, 100]. Quiero establecer [0-30]en verde, [30-70]en amarillo y [70-100]en rojo. Código actual: CodePEN
Aquí están mis opciones actuales.
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
}
});
Y aquí está mi enfoque para configurar los colores de fondo.
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
}
});
Actualmente Chart.JSpartidos colores 0a ilos límites 0a i. También pensé en dibujar otro gráfico ficticio con los colores deseados y configurarlo en la parte superior del gráfico real, pero parece una forma poco fiable de hacerlo.
fuente

Respuestas:
Solución anterior
Puede cambiar un poco su conjunto de datos para lograr eso:
Dado que actualmente
gagueLimitsse divide en un rango20, por lo que no puede acceder al límite de 30,Entonces, lo que hice aquí es elaborar
guageLimitsun rango dividido de10y ahora30es accesible, así es70,Ahora sobre los colores, cada uno de ustedes
guageLimitsrequiere un color en labackgroundColormatriz, los configuré en consecuencia, verifico la matriz anterior. Dado que ninguno de los colores correspondientes puede estar vacío, es posible que deba usar el mismo color hasta llegar al siguiente rango de colores.Solución actualizada
Sus requisitos aclarados ahora:
Ahora, técnicamente, si desea establecer un rango de color en un punto específico, debe tener ese valor en la
gaugeLimitsmatriz, por lo que sugaugeLimitsmatriz reducida ahora se vuelve así:Bueno, no, puede configurar los colores en consecuencia, ya que tiene los puntos especificados en la matriz. Por lo tanto, la
backgroundColormatriz es:Ahora, el truco final
Todavía necesita ocultar el 30 y el 70 de la escala, traté de alternarlo
showMarkersen su código, parece que habilita o deshabilita la escala numérica visible por completo, traté de proporcionar una serie de cadenas, pero solo aceptabooleanChartjs-tsgauge no proporciona mucha documentación sobre las opciones disponibles, así que me colé en el código y encontré
markerFormatFnLo que hace es tomar una función como parámetro y puede proporcionar una función que indique qué hacer con cada uno de sus elementos marcadores.
Entonces, se me ocurrió una idea para proporcionar una función que solo muestre los números que son divisibles por 20 sin ningún resto, de lo contrario, devuelve una cadena vacía, aquí está:
Revise el fragmento:
fuente