Google Chart在x轴上绘制趋势线
我需要用趋势线绘制谷歌折线图,但是我使用Ajax请求来获取数据
在ajax文件中,我在一个数组中插入graphics的元素,然后以JSON格式转换它:
$reply= json_encode($array); echo $reply;
这是我的ajax答复的内容:
reply = [ ["Periodo","Rome","Milan","Test"], ["20160830",1,2,3], ["20160831",2,3,6], ["20160901",2,3,20], ["20160902",20,30,12] ];
在我的程序中,像这样填充graphics:
var replyJSON = JSON.parse(reply); var data = google.visualization.arrayToDataTable(replyJSON);
这是一个类似的例子,我有什么,我会做什么,但在这里我不能复制ajax调用: http : //jsfiddle.net/roby492/srrrn9sa/384/
我需要得到答复JSON,在jQuerydate转换datestring以正确显示趋势线。
我该怎么做? 或者我怎么能通过Ajax发送date而不是string的JSON?
谢谢。 罗伯托·R
看看这个PHP到谷歌图表通过ajax的例子
在这里推荐类似的设置
该示例构build了可供Google使用的JSON
它允许直接从JSON创buildDataTable
以下是构buildJSON的答案摘录
$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);
要在JSON中使用实际的date列,会有点棘手
主要是因为JavaScript中的月份数字是基于零的,不像php
所以如果你在php中格式化date,需要减less1个月的数字
这使得一个冗长的格式声明
在JSON中传递一个date,你可以使用下面的格式,注意它作为一个string传递…
"Date(2016, 8, 28, 15, 34, 40)"
– >相当于今天的date
再次,该月份为零(8 = 9月)
所以build立一个date在这种格式在PHP中,您可以使用以下…
$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').")";
产生上面显示的"Date(...)"
调整从其他答案包括date列片段,可能看起来像这样…
$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);
通过php的ajax获得上述结果,你可以直接创build表
var data = new google.visualization.DataTable(reply);
不需要parsingJSON或使用arrayToDataTable