highCharts動態取值之單折線圖
一般專案中做統計功能的時候會用圖表的的形式展示,我在專案中繪製圖表使用的是HighCharts,官網API:HighCharts中文網 ,官網上呢,關於highcharts的使用方法講的很詳細,還有案例可以看。但是,大都是些靜態資料,在這裡主要總結下通過ajax動態取值展示資料的案例:
假設有這樣一個場景:學校一個貼吧,有一個使用者表,欄位如下(隨便說幾個):loginTime(登入時間),userId(使用者ID),outTime(退出時間)。 有這樣一個需求:統計某一時間段
內使用者登入(上網)數量。前臺頁面佈局如下:
日曆控制元件的程式碼就不貼上了,用的是My97DatePicker ,需要用的可以去網上下載下js檔案,然後查詢下用法即可,下載連結日曆控制元件js 然後頁面上還需要提前設定好畫布(其實就是折線圖顯示的地方),如下即可:
<div id="container" style="min-width:700px;height:400px;"></div>
然後就是取值的問題了,js程式碼如下:
var timeArray = new Array();
var step;
var chart;
var series = [];
var titleY = "";
$(function(){
reDrawLine(0);
});
//單擊事件,根據傳的引數重新畫圖
function reDrawLine(id){
timeArray = new Array();
step = 0;
series = [];
getDatas(id);
chart = null;
drawLine();
}
//獲取資料
function getDatas(id){
var startTime = $("#startTime").val(); //頁面上設定好的日曆控制元件 開始時間 id為startTime
var endTime = $("#endTime").val();
$.ajax({
type:'POST',
url:'<%=basePath%>userlog/userlog!getOnlineNumbers.action',
data:{
'formInfo.startTime':startTime,
'formInfo.endTime':endTime
},
cache : false,
async : false,
dataType : 'JSON',
success : function(data){
var countArray = new Array();
var resultDate = data;
var count = "";
if(resultDate != null){
for(var j=0;j<resultDate.length;j++){
timeArray.push(resultDate[j].clientTimeStr);
countArray.push(resultDate[j].vcount);
} //for
series[0] = {
name: nameValue,
marker: {
symbol: 'circle'
},
data: countArray
};
} //if
} //function
}); //ajax
}
//畫折線圖
function drawLine(){
chart = $("#container").highcharts({
title:{
text : titleX
},
xAxis:{
categories : []
},
yAxis:{
title:{
text:titleY
}
},
plotOptions:{
series:{
cursor:'pointer',
events:{
click:function(event){
},
legendItemClick:function(){
return false;
}
}
}
},
tooltip:{
crosshairs:true,
shared:true
},
credits:{
enabled:false //禁用版權資訊
},
series:series
}).highcharts();
}
action中主要實現如下:
public void getOnlineNumbers(){
List<UserlogInfo> list = UserlogInfoManager.getOnlineNum(formInfo);
JSONArray jsonArray = new JSONArray();
jsonArray = JSONArray.fromObject(list);
writeString(jsonArray.toString());
}
用的ibatis Sql如下(時間進行了處理,只到年月):
select count(userId) as vcountTwo,date_format(loginTime,#dateFormat#) as clientTimeStr from
( select B.userId,date_format(B.loginTime,#dateFormat#) loginTime from m_userInfo B where B.loginTime!=''
<isNotEmpty prepend="and" property="startTime">
date_format(B.loginTime,#dateFormat#) between #startTime# and #endTime#
</isNotEmpty>
group by date_format(B.loginTime,#dateFormat#),B.userId
) A
group by loginTime
主要就是這樣實現的,至於dao層等的做法就不一一闡述了,解析json的java類也有些許差異,主要將sql 及頁面的js記錄下來,以備之需。另外說下,畫圖新手的問題可能主要就是不知道如何傳值,關於畫圖其實最主要的還是sql,只要你根據業務需求將sql完成了,畫圖也就簡單了;正好開發用到這個,就記錄下來,可能自己以後會用到,同時分享給需要的童鞋,文筆不好,可能表達的不是太好,有問題可以留言,相互討論學習下~~ 效果圖如下:
相關文章
- jQuery Highcharts折線圖案例分析jQuery
- MVC實現EChatrs動態折線圖MVC
- Chart.js繪製動態折線圖JS
- highcharts繪製折線資料圖程式碼例項
- 使用chart.js製作動態折線圖JS
- Android 折線圖之hellocharts (餅狀圖)餅圖Android
- 微信小程式折線圖表折線圖加區域圖微信小程式
- R : 折線圖
- 資料視覺化圖表之折線圖視覺化
- echarts 折線圖拼接Echarts
- canvas圖表(2) - 折線圖Canvas
- 自定義控制元件之kotlin繪製折線圖和曲線圖控制元件Kotlin
- 自定義View之顏色漸變折線圖View
- excel折線圖自定x軸y軸 excel折線圖xy設定Excel
- ECHARTS-折線圖不顯示資料 控制折線圖顏色Echarts
- matlab畫折線圖Matlab
- java作折線圖(轉)Java
- AnyChart繪製折線圖
- PyQtGraph繪製折線圖QT
- HighCharts之圖表背景設定
- Echarts資料視覺化:圖表篇(2)—— 折線圖、堆疊面積折線圖Echarts視覺化
- Flutter 實現平滑曲線折線圖Flutter
- MATLAB 繪製折線圖Matlab
- PHP 生成折線圖和餅圖等PHP
- 圖表外掛Highcharts的動態化賦值,實現圖表資料的動態化設定顯示賦值
- 教你如何寫一個簡單的折線圖控制元件控制元件
- amCharts繪製帶趨勢線折線圖
- Python畫圖——matplotlib(普通折線圖)Python
- python畫散點圖和折線圖Python
- 在Excel股價圖中新增折線圖Excel
- D3.js上手——折線圖JS
- Python視覺化-折線圖Python視覺化
- Android 折線圖的實現Android
- echart折線圖異常多出一條連線線
- echarts之靜態與動態地圖Echarts地圖
- Excel 散點圖和折線圖的區別Excel
- amCharts繪製折線圖和柱狀圖混合
- Python視覺化(1):折線圖Python視覺化