javascript - setdata - highcharts tooltip
Ocultando_grupos_ de series en Highcharts y jQuery: ¿cómo obtener un rendimiento aceptable? (2)
El problema aquí es que Highcharts está redibujando el gráfico después de cada cambio de serie. Revisé la API para ver si había un parámetro que podría pasar para diferir eso, pero ese no parece ser el caso.
En su lugar, puede anular el método de volver a dibujar hasta que esté listo, así:
var _redraw = chart.redraw;
chart.redraw = function(){};
//do work
chart.redraw = _redraw;
chart.redraw();
Mira el ejemplo completo aquí . Para mí, fue 10 veces más rápido hacerlo de esta manera.
Estoy usando Highcharts para representar grupos de series temporales. Por lo tanto, los puntos de datos recopilados del mismo individuo están conectados por líneas, y los puntos de datos de individuos que pertenecen al mismo grupo comparten el mismo color. La leyenda de Highcharts muestra cada serie de tiempo individual en lugar de grupos, y tengo más de cien series temporales, por lo que es feo y poco práctico ocultar y mostrar datos de esa manera.
En su lugar, creé botones y usé jQuery para asociarlos con funciones que buscarían coincidencias de colores entre las series temporales y alternar la visibilidad de cada serie coincidente.
Aquí hay un ejemplo con un pequeño conjunto de datos: http://jsfiddle.net/bokov/VYkmg/6/
Aquí está la función de ocultar en serie de ese ejemplo:
$("#button").click(function() {
if ($(this).hasClass("hideseries")) {
hs = true;
} else {
hs = false;
}
$(chart.series).each(function(idx, item) {
if (item.color == ''green'') {
if (hs) {
item.show();
} else {
item.hide();
}
}
});
$(this).toggleClass("hideseries");
});
Lo anterior funciona El problema es que mis datos reales pueden tener más de cien series de tiempo individuales y parece que verificar el color de cada serie es muy lento. Entonces, ¿alguien puede sugerir una forma más eficiente de resolver este problema? ¿Hay algunos métodos incorporados de Highcharts que ya hacen esto? O bien, ¿puedo darle a jQuery un selector más específico?
Intenté profundizar en el elemento <svg>
creado por Highcharts pero no puedo descifrar qué elementos secundarios corresponden a la serie del gráfico.
Gracias.
En lugar de llamar a show()
u hide()
para cada serie, llame a setVisible(/* TRUE OR FALSE HERE */, false);
. Este segundo parámetro es el parámetro de redraw
, y puede evitar causar un redibujado (que es lento) para cada serie.
Luego, una vez que haya terminado de cambiar las visibilidades, llame a chart.redraw()
una vez .