2011-08-21 76 views
6

¿Cómo se puede poblar el eje x con las fechas dadas con valores de fecha 'desde' y 'hasta'?Rellenar el eje X de Highcharts con fechas dadas desde y hasta la fecha

Esencialmente, el usuario ingresará una fecha "desde" y "hasta" en mi interfaz web HTML; por ejemplo, 24/08/2011 - 28/08/2011

Esto será a través de campos de texto HTML cuyos valores se capturan usando jQuery cuando un usuario presiona un botón "Ver gráfico".

Me gustaría crear un gráfico spline cuyo eje x comience 2 días antes de la fecha "desde" y finalice 2 días después de la fecha "hasta".

Así en el ejemplo anterior, el usuario dispone:

from -> 24/08/2011 
to -> 28/08/2011 

lo tanto

x-axis start -> 22/08/2011 
x-axis ends -> 30/08/2011 

También desea que tenga intervalos de 24 horas que se muestran como sus correspondientes fechas. Por lo tanto, el eje x debería ser algo como esto:

| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|___________________________________________________ 
    |  |  |  |  |  |  |  |  | 
22/08 23/08 24/08 25/08 26/08 27/08 28/08 29/08 30/08 

EDIT:

me encontré con el siguiente código:

series: [{ 
     type: 'spline', 
     name: 'USD to EUR', 
     pointInterval: 24 * 3600 * 10, 
     pointStart: Date.UTC(<?php echo($year); ?>, 0, <?php echo($day);?>), 
     data: [ 
      0.8446, 0.8445, 0.8444 
    ] 
     }] 

Pero simplemente no puedo encontrar la manera Highcharts equivale intervalos de tiempo a la partes de datos ... Sé que obviamente tiene que ver con pointInterval ...

Supongo que 24 * 3600 es el número de segundos en un día, pero ¿cuál es el * 10? ¿Cómo hago para que muestre exactamente intervalos de 24 horas?

+2

Pregunta ultra-vaga. Necesita MOAR INFOZ – adlawson

+0

. Usted comprende su problema, pero nosotros no :). Salga durante diez minutos y luego mire esto nuevamente, luego edítelo para incluir un poco más de contexto. Sé que es difícil preguntar cuando estás en medio de algo y tienes un sentido de urgencia mayor. –

+0

@Tim, ¿qué necesitas que te explique? Tengo los rangos mínimo y máximo proporcionados en la parte delantera. Quiero alimentarlos en diagramas altos y establecer los intervalos como días y rellenar automáticamente las fechas intermedias ... – user559142

Respuesta

10

Aquí hay algunas referencias que deberían ayudarlo.

también creó una muestra jsfiddle para ayudarle a empezar.

ejeX

xAxis: { 
    type: "datetime", 
    dateTimeLabelFormats: { 
     day: '%m-%d' 
    }, 
    tickInterval: 24 * 3600 * 1000, 
    min: Date.UTC(<?php echo $date_from;?>), 
    max: Date.UTC(<?php echo $date_to;?>) 
} 

Básicamente, lo que hace es establecer el tipo de ejeX a 'fecha y hora' por lo que el tickInterval entiende que es todo está incrementando por 86400000 milliseconds, y también establece el formato de la ejeX basada en el date format requerido.
Luego, $date_from y $date_to deberían verse así desde PHP manejando el envío del formulario.

$date_from = date("Y, m, d",strtotime($_POST['from']) - 2*86400); 
$date_to = date("Y, m, d",strtotime($_POST['to']) + 2*86400); 
+0

Ahora estoy trabajando en Higuerts con un selector de rango de fechas. Iba a usar AJAX para hacer nuevas llamadas para que las matrices json eliminen y restablezcan los datos. Usando el método en su respuesta, ¿es posible que cargue todos los datos en la serie, luego establezca la fecha máxima mínima en lo que hay en mi selector de rango de fechas y vuelva a dibujar la tabla o la actualice? – Anagio

+0

@Anagio Puede buscar su API, supongo que esto debería funcionar para usted, [http://api.highcharts.com/highcharts#Chart.redraw()](http://api.highcharts.com/highcharts# Chart.redraw()). Sí, creo que puede cargar los cambios y actualizar los campos/parámetros correctos (no el DOM real para el gráfico) y luego volver a dibujarlos. – ace

Cuestiones relacionadas