1. 程式人生 > >前端 Highcharts圖表,如何動態傳入資料

前端 Highcharts圖表,如何動態傳入資料

  第一種: 折線圖  

jsp:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<!--[if lt IE 9]>
<script type="text/javascript" src="lib/html5shiv.js"></script>
<script type="text/javascript" src="lib/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="${base}/lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="${base}/lib/icheck/icheck.css" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/css/style.css" />
<!--[if IE 6]>
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>折線圖</title>
</head>


<body>
<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首頁 <span class="c-gray en">&gt;</span> 統計管理 <span class="c-gray en">&gt;</span> 折線圖
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="重新整理"><i class="Hui-iconfont">&#xe68f;</i></a>
</nav>
<div class="page-container" id="newUser_body">
<div id="container" style="min-width:700px;height:400px"></div>
</div>
<!--_footer 作為公共模版分離出去-->
<script type="text/javascript" src="${base}/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="${base}/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="${base}/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="${base}/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="${base}/static/h-ui/js/H-ui.js"></script>
<script type="text/javascript" src="${base}/static/h-ui.admin/js/H-ui.admin.js"></script>
<script type="text/javascript" src="${base}/static/js/common/dateUtil.js"></script>
<script type="text/javascript" src="${base}/static/common.js"></script>
<!--請在下方寫此頁面業務相關的指令碼-->
<script type="text/javascript" src="${base}/lib/hcharts/Highcharts/5.0.6/js/highcharts.js"></script>
<script type="text/javascript" src="${base}/lib/hcharts/Highcharts/5.0.6/js/modules/exporting.js"></script>
<script type="text/javascript">
//定義一個Highcharts的變數,初始值為null
var oChart = null;
//定義oChart的佈局環境
//佈局環境組成:X軸、Y軸、資料顯示、圖示標題
var oOptions = {
//設定圖表關聯顯示塊和圖形樣式
chart: {
renderTo: 'container', //設定顯示的頁面塊
type: 'line' //設定顯示的方式
//type: 'column'
},
//圖示標題
title: {
text: '本月新增使用者和流失使用者圖表'
//text: null, //設定null則不顯示標題
},
//x軸
xAxis: {
categories: ['一號', '二號', '三號', '四號', '五號', '六號', '七號', '八號', '九號', '十號', '十一號', '十二號', '十三號', '十四號', '十五號', '十六號', '十七號', '十八號', '十九號', '二十號', '二十一號', '二十二號', '二十三號', '二十四號', '二十五號', '二十六號', '二十七號', '二十八號', '二十九號', '三十號', '三十一號']
},
//y軸
yAxis: {
title: {
text: '人數 (個)'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
lang: {
                printChart:"列印圖表",
                 downloadJPEG: "下載JPEG 圖片" , 
                 downloadPDF: "下載PDF文件"  ,
                 downloadPNG: "下載PNG 圖片"  ,
                 downloadSVG: "下載SVG 向量圖" , 
                 exportButtonTitle: "匯出圖片" 
          },
credits: {
enable: 'false',
text: '<b style="font-size:12px;">遊戲統計中心</b>',
href: ' '
},
//資料列
series: []
};


$(document).ready(function() {
oChart = new Highcharts.Chart(oOptions);
//非同步動態載入資料列
LoadSerie_Ajax();
LoadSerie_Ajax2();
});


//非同步讀取資料並載入到圖表
function LoadSerie_Ajax() {
oChart.showLoading();
$.ajax({
url: '${base}/count/getNgCount.do',
type: 'POST',
dataType: 'json',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function(rntData) {
var oSeries = {
name: "流失使用者數量",
data: rntData.data
};
oChart.addSeries(oSeries);
}
});
oChart.hideLoading();
}


function LoadSerie_Ajax2() {
oChart.showLoading();
$.ajax({
url: '${base}/count/getCount.do',
type: 'POST',
dataType: 'json',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function(rntData) {
var oSeries = {
name: "新增使用者數量",
data: rntData.data
};
oChart.addSeries(oSeries);
}
});
oChart.hideLoading();
}
</script>
</body>
</html>

後臺:

@ResponseBody
@RequestMapping(value = "/getCount.do")
public Message getCount(Integer id, Model model) {
int[] arr = {123,100,99,88,77,66,55,44,33,23,30,10,20,30,40,50,200,70,100,90,200,100,60,23,30,10,20,30};
return new Message(arr);
}

折線圖,柱狀圖,區域圖基本查不多,改下type : column(柱狀圖),area(區域圖) 效果自己看上傳圖片,

第二種 :時間軸折線圖 

jsp:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<!--[if lt IE 9]>
<script type="text/javascript" src="lib/html5shiv.js"></script>
<script type="text/javascript" src="lib/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="${base}/lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="${base}/lib/icheck/icheck.css" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/css/style.css" />
<!--[if IE 6]>
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>時間軸折線圖</title>
</head>


<body>
<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首頁 <span class="c-gray en">&gt;</span> 統計管理 <span class="c-gray en">&gt;</span> 時間軸折線圖
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="重新整理"><i class="Hui-iconfont">&#xe68f;</i></a>
</nav>
<div class="page-container">
<div id="container" style="min-width:700px;height:400px"></div>
</div>
<!--_footer 作為公共模版分離出去-->
<script type="text/javascript" src="${base}/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="${base}/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="${base}/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="${base}/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="${base}/static/h-ui/js/H-ui.js"></script>
<script type="text/javascript" src="${base}/static/h-ui.admin/js/H-ui.admin.js"></script>
<script type="text/javascript" src="${base}/static/js/common/dateUtil.js"></script>
<script type="text/javascript" src="${base}/static/common.js"></script>
<!--請在下方寫此頁面業務相關的指令碼-->
<script type="text/javascript" src="${base}/lib/hcharts/Highcharts/5.0.6/js/highcharts.js"></script>
<script type="text/javascript" src="${base}/lib/hcharts/Highcharts/5.0.6/js/modules/exporting.js"></script>
<script type="text/javascript">
//定義一個Highcharts的變數,初始值為null
var oChart = null;
//定義oChart的佈局環境
//佈局環境組成:X軸、Y軸、資料顯示、圖示標題
var oOptions = {
//設定圖表關聯顯示塊和圖形樣式
chart: {
renderTo: 'container', //設定顯示的頁面塊
type: 'area' //設定顯示的方式
//type: 'column'
},
//圖示標題
title: {
text: '本月每天線上人數表'
//text: null, //設定null則不顯示標題
},
//x軸
xAxis: {
//categories: ['一號', '二號', '三號', '四號', '五號', '六號', '七號', '八號', '九號', '十號', '十一號', '十二號', '十三號', '十四號', '十五號', '十六號', '十七號', '十八號', '十九號', '二十號', '二十一號', '二十二號', '二十三號', '二十四號', '二十五號', '二十六號', '二十七號', '二十八號', '二十九號', '三十號', '三十一號']
type: 'datetime',
//maxZoom: 1000 * 60 * 60 * 24,
title: {
text: null
}
},
//y軸
yAxis: {
title: {
text: '線上人數'
}
},
tooltip: {
shared: true
},
plotOptions: {
area: {
fillColor: {
linearGradient: {
x1: 0,
y1: 0,
x2: 0,
y2: 1
},
stops: [
[0, Highcharts.getOptions().colors[0]],
[1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
]
},
lineWidth: 1,
marker: {
enabled: false
},
shadow: false,
states: {
hover: {
lineWidth: 1
}
},
threshold: null
}
},
credits: {
enable: 'false',
text: '<b style="font-size:12px;">遊戲統計中心</b>',
href: ' '
},
//資料列
series: []
};
$(document).ready(function() {
oChart = new Highcharts.Chart(oOptions);
//非同步動態載入資料列
LoadSerie_Ajax();
});
//非同步讀取資料並載入到圖表
function LoadSerie_Ajax() {
oChart.showLoading();
$.ajax({
url: '${base}/count/getNgCount.do',
type: 'POST',
dataType: 'json',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function(rntData) {
var oSeries = {
name: "流失使用者數量",
pointInterval: 12 * 3600 * 1000, //間隔12小時取一次資料
pointStart: Date.UTC(2017, 10, 23),
data: rntData.data
};
oChart.addSeries(oSeries);
}
});
oChart.hideLoading();
}
</script>
</body>
</html>

後臺:

@ResponseBody
@RequestMapping(value = "/getNgCount.do")
public Message getNgCount(Integer id, Model model) {
List<Integer> list = new ArrayList<>();
list.add(20);
list.add(30);
list.add(40);
list.add(50);
list.add(60);
list.add(80);
list.add(90);
list.add(110);
list.add(40);
list.add(50);
list.add(60);
list.add(80);
list.add(90);
list.add(110);
list.add(20);
list.add(30);
list.add(110);
return new Message(list);
}

第三種 :餅狀圖

jsp:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<!--[if lt IE 9]>
<script type="text/javascript" src="lib/html5shiv.js"></script>
<script type="text/javascript" src="lib/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="${base}/lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="${base}/lib/icheck/icheck.css" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="${base}/static/h-ui.admin/css/style.css" />
<!--[if IE 6]>
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>餅狀圖</title>
</head>
<body>
<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首頁 <span class="c-gray en">&gt;</span> 統計管理 <span class="c-gray en">&gt;</span> 餅狀圖
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="重新整理"><i class="Hui-iconfont">&#xe68f;</i></a>
</nav>
<div class="page-container">
<div id="container" style="min-width:700px;height:400px"></div>
</div>
<!--_footer 作為公共模版分離出去-->
<script type="text/javascript" src="${base}/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="${base}/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="${base}/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="${base}/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="${base}/static/h-ui/js/H-ui.js"></script>
<script type="text/javascript" src="${base}/static/h-ui.admin/js/H-ui.admin.js"></script>
<script type="text/javascript" src="${base}/static/js/common/dateUtil.js"></script>
<script type="text/javascript" src="${base}/static/common.js"></script>
<!--請在下方寫此頁面業務相關的指令碼-->
<script type="text/javascript" src="${base}/lib/hcharts/Highcharts/5.0.6/js/highcharts.js"></script>
<script type="text/javascript" src="${base}/lib/hcharts/Highcharts/5.0.6/js/modules/exporting.js"></script>
<script type="text/javascript">
//定義一個Highcharts的變數,初始值為null
var oChart = null;
//定義oChart的佈局環境
//佈局環境組成:X軸、Y軸、資料顯示、圖示標題
var oOptions = {
//設定圖表關聯顯示塊和圖形樣式
chart: {
renderTo: 'container', //設定顯示的頁面塊
type: 'pie'
},
//圖示標題
title: {
text: '每月餘額比例人數'
//text: null, //設定null則不顯示標題
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
color: '#000000',
connectorColor: '#000000',
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
}
}
},
credits: {
enable: 'false',
text: '<b style="font-size:12px;">遊戲統計中心</b>',
href: ' '
},
lang: { 
printChart: "列印圖表",
downloadJPEG: "下載JPEG 圖片",
downloadPDF: "下載PDF文件",
downloadPNG: "下載PNG 圖片",
downloadSVG: "下載SVG 向量圖",
exportButtonTitle: "匯出圖片"
},
//資料列
series: []
};
$(document).ready(function() {
oChart = new Highcharts.Chart(oOptions);
//非同步動態載入資料列
LoadSerie_Ajax();
});
//非同步讀取資料並載入到圖表
function LoadSerie_Ajax() {
//debugger;
oChart.showLoading();
$.ajax({
url: '${base}/count/getPie1.do',
type: 'POST',
dataType: 'json',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: function(result) {
var json = result.data; //傳入的map               
var jsondata = []; //定義一個空的陣列          
for(var i in json) { //遍歷
jsondata.push([i, json[i]]); //賦值 
}
var oSeries = {
name: "餘額分佈圖",
data: jsondata //將陣列傳入
};
oChart.addSeries(oSeries);
}
});
oChart.hideLoading();
}
</script>
</body>
</html>

後臺:

@ResponseBody
@RequestMapping(value = "/getPie1.do")
public Message getPie1(Integer id, Model model) {
//{"雜想":1,"心情":1,"ckeditor":3,"文藝":1,"隨筆":1,"進步":1,"感想":1,"xheditor":2,"java":1,"測試":1,"css":1}; 
Map<String, Integer> data =  new HashMap<>();
data.put("雜想", 30);
data.put("心情", 10);
data.put("文藝", 20);
data.put("隨筆", 15);
data.put("感想", 15);
data.put("測試", 10);
return new Message(data);
}