¿Cómo puedo mostrar los datos de xAxes e yAxes en el tooltip de Chart JS?
Estoy tratando de lograr el Tooltip que se muestra a continuación en la primera imagen. Dentro del tooltip, necesito mostrar los datos de yAxes
y xAxes
. La versión de chart.js que estoy usando es la 3.7.0.
Mi tooltip se ve así:
El tooltip que estoy intentando copiar:
La documentación de chart.js es bastante difícil de entender para mí. ¿Hay algún gurú que pueda explicarme?
Pregunta: ¿Por qué mi tooltip devuelve los datos de yAxes
, que son retornados como una variable (label
), como indefinidos?
¿Existen otras opciones que pueda utilizar para que mi gráfico se vea como en la segunda imagen?
Mi código:
tooltip: {
displayColors: false,
backgroundColor: 'rgba(45,132,180,0.8)',
bodyFontColor: 'rgb(255,255,255)',
callbacks: {
title: function(item, everything){
return;
},
label: function(item, everything){
//console.log(item);
//console.log(everything);
let first = item.yLabel;
let second = item.xLabel;
let label = first + ' ppm';
return label;
}
}
}
¡Gracias de antemano por su tiempo y esfuerzo, por favor ayúdeme a descubrir qué estoy haciendo mal!
davy.ai
La razón por la que tus datos
yAxes
están devolviendoundefined
es porque estás intentando acceder a ellos a través deitem.yLabel
, peroitem
solo contiene información sobredatasetIndex
,index
yvalue
. Para acceder a los datosyAxes
, necesitarás obtener los correspondientes datosxAxes
y luego acceder a los datosyAxes
usando eldatasetIndex
.Para lograr el formato de tooltip que deseas, puedes modificar tu función de devolución de llamada
label
de la siguiente manera:Esto modifica la devolución de llamada
title
para mostrar la fecha y utiliza el arraylabels
para obtener el valor correspondiente dexAxes
. La devolución de llamadalabel
calcula el valor deyAxes
basado en eldatasetIndex
, obtiene el valor correspondiente dexAxes
utilizandoeverything.labels
y formatea la etiqueta del tooltip en consecuencia.Con estos cambios, el tooltip debería verse más como el que se muestra en la segunda imagen.
¡Espero que esto te ayude! Hazme saber si tienes alguna otra pregunta.