接著上一篇部落格,除了實現統計總量外,我還用百度的echart實現了 統計答題曲線圖。效果如下:http://newer.gailvlunpt.com/EntranceEducation/admin.php/Statis/index
百度echart是一個專業的花統計圖,曲線圖的第三方js類庫。按照使用說明使用還是蠻簡單的。
原始碼如下
前端 html+js+css代碼如下
{__NOLAYOUT__}<!DOCTYPE html><html><head> <meta charset="utf-8"> <!-- 引入 ECharts 檔案 --> <script src="__PUBLIC__/admin/js/echarts.common.min.js"></script> <script src="__PUBLIC__/admin/js/jquery.min.js"></script></head><body> <!-- 為 ECharts 準備一個具備大小(寬高)的 DOM --> <p id="main" style="width: 1400px;height:600px;"></p> <a href="{:U('sum')}" target="_blank">即時統計平台答題總量</a></body></html><script type="text/javascript">var myChart = echarts.init(document.getElementById('main'));option = { title : { text: '過去3小時答題情況', subtext: '浙江工商大學新生事業教育平台試試答題資料' }, tooltip : { trigger: 'axis' }, legend: { data:['過去3小時答題量'] }, calculable : true, xAxis : [ { type : 'category', boundaryGap : false, data : [] } ], yAxis : [ { type : 'value', axisLabel : { formatter: '{value}' } } ], series : [ { name:'即時答題統計', type:'line', data:[], }, ]}; // 使用剛指定的配置項和資料顯示圖表。url = "{:U('Statis/data')}";myChart.setOption(option);// url = 'http://newer.gailvlunpt.com/EntranceEducation/admin.php/Statis/data';$.get(url).done(function (data) { // 填入資料 myChart.setOption({ xAxis: { data: data.x_data }, series: [{ // 根據名字對應到相應的系列 data: data.y_data }] });}); setInterval(function () { $.get(url).done(function (data) { // 填入資料 myChart.setOption({ xAxis: { data: data.x_data }, series: [{ // 根據名字對應到相應的系列 data: data.y_data }] }); });}, 60000); //一秒鐘統計一次</script>
後台php代碼
public function data() { $now = time(); // $timeArray = new array(); for($i=1;$i<=180;$i++){ $time = $now - 3 * 60 * 60 + 60 * $i; $timeArray[] = date('Y-m-d H:i', $time); $map['time'] = array('between',array(date('Y-m-d H:i', $time),date('Y-m-d H:i', $time+60))); $dataArray[] = D('Exercise')->where($map)->count(); } $data = array( 'x_data'=>$timeArray, 'y_data'=>$dataArray ); $this->ajaxReturn($data); }
用每時間分鐘作為橫座標,答題資料量作為縱座標 畫圖