本文通过讲解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, 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=" 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,供前台获取
}