¿Hay alguna forma de pasar algunos datos adicionales al objeto de la serie que se utilizará para mostrar en el gráfico 'información sobre herramientas'?
por ejemplo
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%b %e', this.x) +': '+ this.y;
}
aquí solo podemos usar series.name, this.x & this.y para la serie. digamos que necesito pasar otro valor dinámico solo con el conjunto de datos y puedo acceder a través del objeto de la serie. ¿es posible?
Gracias a todos de antemano.
series
objeto y mostrarlos en este controlador?Respuestas:
Sí, si configura el objeto de la serie como se muestra a continuación, donde cada punto de datos es un hash, puede pasar valores adicionales:
En su información sobre herramientas puede acceder a él a través del atributo "punto" del objeto pasado:
Ejemplo completo aquí: https://jsfiddle.net/burwelldesigns/jeoL5y7s/
fuente
Además, con esta solución, incluso puede colocar varios datos tanto como desee :
Gracias Nick.
fuente
datetime
un valor x pero queremos agregar datos adicionales a la información sobre herramientas.Para datos de series de tiempo, especialmente con suficientes puntos de datos para activar el umbral turbo , las soluciones propuestas anteriormente no funcionarán. En el caso del umbral turbo, esto se debe a que Highcarts espera que los puntos de datos sean una matriz como:
Para no perder los beneficios del umbral turbo (que es importante cuando se trata de muchos puntos de datos), almaceno los datos fuera del gráfico y busco el punto de datos en la
formatter
función de información sobre herramientas . He aquí un ejemplo:Este enfoque funcionará para todos los tipos de gráficos.
fuente
data: _.map(data, row => [row['timestamp'], row['value']])
serdata: chartData.map(row => [row.timestamp, row.value])
? Además, no necesita lodash; puede utilizar Array.find . No es compatible con IE, pero ya está usando ES6 (const
) y MS dejó de admitir IE en 2016 .chartData
. Estoy acostumbrado a usar lodash pero tienes razón. Actualicé mi ejemplo para que sea independiente de la biblioteca. Gracias.Estoy usando AJAX para obtener mis datos de SQL Server, luego preparo una matriz js que se usa como datos en mi gráfico. Código JavaScript una vez que AJAX es exitoso:
Ahora para mostrar metadatos adicionales en la información sobre herramientas:
Uso un DataRow para iterar a través de mi conjunto de resultados, luego uso una clase para asignar los valores antes de devolverlos en formato Json. Aquí está el código C # en la acción del controlador llamada por Ajax.
Me doy cuenta de que hay una forma más eficiente y aceptable de codificar en C #, pero heredé el proyecto.
fuente
Solo para agregar algún tipo de dinamismo:
Hizo esto para generar datos para un gráfico de columnas apiladas con 10 categorías.
Quería tener para cada serie de datos de categoría 4 y quería mostrar información adicional (imagen, pregunta, distractor y respuesta esperada) para cada una de las series de datos:
En la sección highcharts:
Espero que ayude a alguien.
fuente