tutorial haxis google examples español column chart bar jquery ajax charts google-visualization

jquery - haxis - google charts tutorial español



Google Chart dibuja líneas de tendencia con fecha en el eje x (1)

eche un vistazo a este gráfico de php a google a través del ejemplo de ajax

recomendar una configuración similar aquí

el ejemplo crea JSON que es aceptable por google

que permite la creación de la DataTable , directamente desde el JSON

Lo que sigue es un fragmento de esa respuesta, que construye el JSON

$rows = array(); $table = array(); $table[''cols''] = array( array(''label'' => ''Time'', ''type'' => ''string''), array(''label'' => ''Wind_Speed'', ''type'' => ''number''), array(''label'' => ''Wind_Gust'', ''type'' => ''number'') ); while ($row = mysql_fetch_assoc($sqlResult)) { $temp = array(); $temp[] = array(''v'' => (string) $row[''Time'']); $temp[] = array(''v'' => (float) $row[''Wind_Speed'']); $temp[] = array(''v'' => (float) $row[''Wind_Gust'']); $rows[] = array(''c'' => $temp); } $table[''rows''] = $rows; echo json_encode($table);

utilizar una columna de fecha real en el JSON, se vuelve un poco complicado

principalmente porque los números de los meses en JavaScript se basan en cero, a diferencia de php

entonces, si formatea una fecha en php, necesita reducir el número del mes en 1

que hace una declaración de formato largo

para pasar una fecha en JSON, puede usar el siguiente formato, tenga en cuenta que se pasa como una cadena ...

"Date(2016, 8, 28, 15, 34, 40)" -> lo que equivale a la fecha de hoy
de nuevo, el mes está basado en cero (8 = septiembre)

para construir una fecha en este formato en php, puede usar lo siguiente ...

$date1 = new DateTime(); $date2 = "Date(".date_format($date1, ''Y'').", ".((int) date_format($date1, ''m'') - 1).", ".date_format($date1, ''d'').", ".date_format($date1, ''H'').", ".date_format($date1, ''i'').", ".date_format($date1, ''s'').")";

que produce la "Date(...)" muestra arriba

ajustar el fragmento de la otra respuesta para incluir una columna de fecha, podría verse más o menos así ...

$rows = array(); $table = array(); $table[''cols''] = array( array(''label'' => ''Date'', ''type'' => ''date''), array(''label'' => ''Wind_Speed'', ''type'' => ''number''), array(''label'' => ''Wind_Gust'', ''type'' => ''number'') ); while ($row = mysql_fetch_assoc($sqlResult)) { $date1 = $row[''Date'']; $date2 = "Date(".date_format($date1, ''Y'').", ".((int) date_format($date1, ''m'') - 1).", ".date_format($date1, ''d'').", ".date_format($date1, ''H'').", ".date_format($date1, ''i'').", ".date_format($date1, ''s'').")"; $temp = array(); $temp[] = array(''v'' => (string) $date2); $temp[] = array(''v'' => (float) $row[''Wind_Speed'']); $temp[] = array(''v'' => (float) $row[''Wind_Gust'']); $rows[] = array(''c'' => $temp); } $table[''rows''] = $rows; echo json_encode($table);

obteniendo los resultados anteriores a través de ajax de php, puede crear la tabla directamente

var data = new google.visualization.DataTable(reply);

no es necesario analizar el JSON o utilizar arrayToDataTable

Necesito dibujar un gráfico de líneas de Google con líneas de tendencia, pero utilizo una solicitud de Ajax para obtener datos para poner dentro

En el archivo ajax, inserto en una matriz los elementos del gráfico y luego lo convierto en JSON así:

$reply= json_encode($array); echo $reply;

Este es el contenido de mi respuesta ajax:

reply = [ ["Periodo","Rome","Milan","Test"], ["20160830",1,2,3], ["20160831",2,3,6], ["20160901",2,3,20], ["20160902",20,30,12] ];

En mi programa, puebla el gráfico así:

var replyJSON = JSON.parse(reply); var data = google.visualization.arrayToDataTable(replyJSON);

Este es un ejemplo similar de lo que tengo y de lo que haría, pero aquí no puedo replicar la llamada ajax: http://jsfiddle.net/roby492/srrrn9sa/384/

Necesito obtener la respuesta JSON, convertir la cadena de fecha en la fecha de jquery para mostrar correctamente las líneas de tendencia.

¿Cómo puedo hacer esto? ¿O cómo puedo enviar por AJAX el JSON con fecha en lugar de una cadena?

Gracias. Roberto R.