Highcharts简介:
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使
用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。
基于jQuery开发一个图形报表工具插件
入门案例:
第一步:将Highcharts相关资源文件复制到项目中
第二步:在页面中引入相关js文件
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<script src="${pageContext.request.contextPath }/js/highcharts/highcharts.js"></script>
<script src="${pageContext.request.contextPath }/js/highcharts/modules/exporting.js"></script>
第三步:在页面中提供一个div,并指定id属性
第四步:调用Highcharts提供的方法,动态创建图表
饼状图:
<script type="text/javascript">
$(function(){
//页面加载完成后,动态创建图表
$("#test").highcharts({
title: {
text: '各浏览器份额'
},
series: [{
type: 'pie',
name: '浏览器占比',
data: [
['Firefox', 45.0],
['IE', 26.8],
['Safari', 8.5],
['Opera', 6.2],
['Others', 0.7]
]
}]
});
});
</script>
柱状图:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>highcharts</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<script src="${pageContext.request.contextPath }/js/highcharts/highcharts.js"></script>
<script src="${pageContext.request.contextPath }/js/highcharts/modules/exporting.js"></script>
<script type="text/javascript">
$(function(){
$('#test').highcharts({
title: {
text: '水果销量'
},
subtitle:{text:'官方统计'},
xAxis: {
categories: ['苹果', ' 橙', '梨', '香蕉', '李']
},
series: [{
type: 'column',
name: '小明',
data: [3, 2, 1, 3, 4]
}, {
type: 'column',
name: '小红',
data: [2, 3, 5, 7, 6]
}, {
type: 'column',
name: '小白',
data: [4, 3, 3, 9, 0]
}]
});
});
</script>
</head>
<body>
<div id="test"></div>
</body>
</html>
上面介绍的都是最基础的属性。
项目中使用:发送ajax请求查询数据库,动态展示到页面:
基于饼状图:业务流程,点击按钮,显示隐藏域,发送ajax请求data数据,展示到页面
我们先看一下需要展示数据的格式
第一步:在subarea.jsp页面中引入Highcharts资源文件
第二步:在jsp页面中提供按钮,并提供div窗口,在这个窗口中展示图表
<!-- 用于展示图表 -->
<div class="easyui-window" title="区域分区分布图" id="showSubareaWindow"
collapsible="false" minimizable="false" maximizable="false" style="top:20px;left:200px">
<div id="test" split="false" border="false" >
</div>
</div>
定义窗口属性:
$('#showSubareaWindow').window({
width: 800,
modal: true,
shadow: true,
closed: true,
height: 700,
resizable:false
});
第三步:定义function点击事件
function doShowHighcharts(){
$("#showSubareaWindow").window("open");
//页面加载完成后,动态创建图表
$.post("subareaAction_findAllByCount.action",function(data){
$("#test").highcharts({
title: {
text: '区域分区分布图'
},
series: [{
type: 'pie',
name: '区域分区分布图',
data: data
}]
});
});
}
下面是后端返查询数据,返回给前端(地区名称),(统计数量)
第四步:在服务端Action中提供方法
/**
* 查询区域分区分布图数据
*/
public String findAllByCount(){
List<Object> list = subareaService.findAllByCount();
this.java2Json(list, new String[]{});
return NONE;
}
Dao代码:
@Repository
public class SubareaDaoImpl extends BaseDaoImpl<Subarea> implements ISubareaDao {
public List<Object> findSubareasGroupByProvince() {
String hql = "SELECT r.province ,count(*) FROM Subarea s LEFT OUTER JOIN s.region r Group BY r.province";
return (List<Object>) this.getHibernateTemplate().find(hql);
}
}