2011-08-25 24 views
14

¿Alguien sabe cómo hacer zoom automáticamente en una parte de un gráfico después de que termine de cargarse? Tengo muchos datos de series temporales, pero la información más importante está a la derecha. Me gustaría que todos los datos estuvieran disponibles, pero solo se acercaron los últimos 7 días.Aumentando automáticamente el zoom en Highcharts después de cargar

Lo que me gustaría simular es un usuario que hace clic y arrastra los últimos 7 días en mi gráfico. Entonces, si alguien sabe cómo activar manualmente ese evento, es probablemente lo que me gustaría hacer.

Aquí es un diagrama de muestra de jsFiddle que tiene la funcionalidad de zoom normales: http://jsfiddle.net/Y5q8H/50/

Tengo algunas otras ideas de cómo esto se podría hacer, pero creo que lo que quiero es la mejor manera de hacerlo .

Otras ideas:

1) Solamente cargar los últimos 7 días, poner un falso 'Reset zoom' botón que carga entonces toda la serie de datos después

2) Mira en ese producto hermana StockCharts que está en Beta en este momento. Parece tener un montón de pantallas de rango preestablecido que sería genial tener también. Sin embargo, no estoy seguro de cuánto de mi código debería cambiar.

Respuesta

27

Puede usar la función setExtremes para cambiar el zoom. http://jsfiddle.net/quVda/382/

Para un gráfico de series de tiempo con la información día a día, es necesario utilizar la representación GMT de la fecha:

var d = new Date(); 
chart.xAxis[0].setExtremes(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 7), Date.UTC(d.getFullYear(), d.getMonth(), d.getDate())); 
+0

¡Impresionante! Configuré esto para que ocurriera en el controlador de eventos de carga y funcionó perfectamente. Gracias :) – Robodude

+1

El único problema es que no hace que aparezca el botón Restablecer zoom. De todos modos, ¿usar el predeterminado como lo harías si hicieras zoom normalmente? – Robodude

+4

Se actualizó el violín en función de la fuente de los gráficos altos. Puede agregar un elemento a la barra de herramientas del gráfico: http://jsfiddle.net/quVda/1/ – Dennis

3

Actualizado violín oficial para la solución, chicos: http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/stock/members/axis-setextremes/

$(function() { 
    $('#container').highcharts('StockChart', { 

     rangeSelector: { 
      selected: 1 
     }, 

     series: [{ 
      name: 'USD to EUR', 
      data: usdeur 
     }] 
    }); 

    $('#button').click(function() { 
     var chart = $('#container').highcharts(); 
     chart.xAxis[0].setExtremes(
      Date.UTC(2007, 0, 1), 
      Date.UTC(2007, 11, 31) 
     ); 
    }); 
}); 
0

Hay otra opción si prueba

var max_in = 100; //the highest y value you have in your series data; 
var min_in = 41 ;//the lowest y value you have in your series data; 

yaxis=this.yAxis[0]; 
yaxis.options.max = max_in; 
yaxis.options.min = min_in; 
Cuestiones relacionadas