本文通過講解Highcharts生成一個簡單的3D柱狀圖實例來學習Highcharts的使用。
JSP 頁面
1、需要引入的js文件
<script src="<%=basePath%>javascript/jquery-1.6.1.js"></script> <script src="<%=basePath%>javascript/wiassess/highCharts4.0.3/highcharts.js"></script> <script src="<%=basePath%>javascript/wiassess/highCharts4.0.3/highcharts-3d.js"></script> <script src="<%=basePath%>javascript/wiassess/highCharts4.0.3/modules/exporting.js"></script>
2、JavaScript
<script type="text/javascript">
function Query(){
/* 省略tradTp,county,nature等參數的獲取過程 */
$.ajax({
type:"post",
dataType:"json",
data: {"project.tradTp":tradTp,"project.county":county,"project.projNature":nature,"project.replDtS":replDtS,"project.replDtE":replDtE,"project.chartTp":chartTp}, //參數列表
async:false,
url:"<%=basePath%>wiassess/projectMgr/projectMgrAction!getProjectChart.action",
success: function(result){
var jsonData=result;
var xdata=jsonData.xdata; //xdata是后台傳向前台的參數,代表橫軸的數組
var data=jsonData.data; //data是后台傳向前台的參數,代表顯示數據,本實例顯示的是年用水量
var tiltleTm=jsonData.title; //tiltleTm 是后台傳向前台的參數,代表圖標的標題
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chartPro', //要顯示柱狀圖的div的id
type: 'column', //圖表類型為柱狀圖
margin: 75,
options3d: { //這里設置3D圖表的樣式
enabled: true,
alpha: 10,
beta: 0,
depth: 50,
viewDistance: 25
}
},
title: {
text: tiltleTm //顯示柱狀圖的標題
},
credits: {//不顯示highchart超鏈接
enabled: false
},
plotOptions: {
column: {
depth: 10,
value: 0,
width: 1
}
},
yAxis:{ //縱坐標
title:{
text:'單位:立方米'
}
},
xAxis: { //橫坐標
categories: xdata
},
tooltip: { //提示格式
shared: true,
useHTML: true,
headerFormat: '<small>{point.key}</small><table>',
pointFormat: '<tr><td style="color: {series.color}">{series.name}: </td>' +
'<td style="text-align: right"><b>{point.y} 立方米</b></td></tr>',
footerFormat: '</table>',
valueDecimals: 2
},
series: [{
name:'取水總量',
data: data
}]
});
},
error: function(){
alert('獲取失敗!');
}
});
}
</script>
3、jsp
<div id="chartPro" style=" width: 66%; height: 400px; " ></div>
后台傳數據----拼接json
action方法getProjectChart()
/**
* 獲得項目統計圖
* @return
* @throws Exception
*/
public String getProjectChart() throws Exception{
//省略參數獲取過程
//需要獲取的參數
//1、title:titleStr----柱狀圖的標題,StringBuffer類型,將其值傳入前台
//2、data:sumWaterByCounty-----柱狀圖的數據列,是一個數組
//3、xdata:xdata-------橫坐標軸的數據,也是一個數組
/** * 輸出統計的字符串轉化成JSON,返回JSON * */ StringBuilder sb=new StringBuilder(); sb.append("{\"success\":true,"); sb.append("\"title\":\""+titleStr.toString()+"\","); sb.append("\"data\":"+JSONArray.fromObject(sumWaterByCounty)+",\"xdata\":"+JSONArray.fromObject(xdata)+""); sb.append("}"); jsonStr=sb.toString(); return jsonStr;//返回拼接的JSON,供前台獲取
}
