下载ECharts
Echarts官网:https://echarts.apache.org/zh/index.html
条形图
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>echarts图表</title>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" />
<script type="text/javascript"
src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath}/js/echarts.js"></script>
<script type="text/javascript">
$(function() {
$("#barBtn").click(function(){
var myChart1 = echarts.init(document.getElementById('pic_1'));
window.onresize = function(){
myChart1.resize();
};
//图表显示提示信息
myChart1.showLoading();
//定义图表options
var options = {
title : {
text : "就业城市统计图",
subtext:'各城市的人数/已就业的总人数*100',
},
tooltip : {
trigger : 'axis'
},
legend : {
data : []
},
toolbox : {
show : true,
feature : {
mark : false
}
},
calculable : true,
xAxis : [ {
type : 'category',
data : []
} ],
yAxis : [ {
type : 'value',
splitArea : {
show : true
},
}],
series : [{
type: 'bar',
itemStyle: {
normal: {
//定义一个list,然后根据所以取得不同的值,这样就实现了,
color: function(params) {
var colorList = [
'#FF99CC','#330000','#66CC00','#33CCFF','#999900',
'#FF0099','#C1232B','#663333','#E87C25','#FF0033',
'#0000FF','#9BCA63','#993333','#FF6600','#7F7F7F',
'#660066','#339966','#FF0000','#383838','#336600',
'#336666','#990000','#CCCCFF','#FFFF00','#330033',
];
return colorList[params.dataIndex];
},
//以下为是否显示,显示位置和显示格式的设置了
label: {
show: true,
position: 'top',
}
}
},
//设置柱的宽度,要是数据太少,柱子太宽不美观~
barWidth : '60%',
data : []
}]
};
//通过Ajax获取数据
$.ajax({
type: "post",
url: "cityChart.do",
data : {
session: '2018'
},
dataType : "json", //返回数据形式为json
success : function(result) {
if (result) {
//将返回的category和series对象赋值给options对象内的category和series
//因为xAxis是一个数组 这里需要是xAxis[i]的形式
options.legend.data = result.legend;
options.xAxis[0].data = result.category;
options.series[0].data = result.serisData;
myChart1.hideLoading();
myChart1.setOption(options);
}
},
error : function(errorMsg) {
alert("图表请求数据失败啦!");
}
});
})
});
</script>
</head>
<body>
<!-- 统计图内容占8份 平板和手机统一占12份 -->
<div class="col-xs-12 col-sm-12 col-md-9">
<button type="button" id="barBtn">条形图</button>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="k_post_chart">
<div id="pic_1" style="width: 100%; height: 400px;"></div>
</div>
</div>
</div>
</body>
</html>
折线图
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>echarts图表</title>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" />
<script type="text/javascript"
src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath}/js/echarts.js"></script>
<script type="text/javascript">
$(function() {
$("#lineBtn").click(function(){
var myChart2 = echarts.init(document.getElementById('pic_2'));
window.onresize = function(){
myChart2.resize();
};
//图表显示提示信息
myChart2.showLoading();
//定义图表options
var options = {
title : {
text : "就业城市统计图",
subtext:'各城市的人数/已就业的总人数*100',
},
tooltip : {
trigger : 'axis'
},
legend : {
data : []
},
toolbox : {
show : true,
feature : {
mark : false
}
},
calculable : true,
xAxis : [ {
type : 'category',
data : []
} ],
yAxis : [ {
type : 'value',
splitArea : {
show : true
},
}],
series : [{
type: 'line',
itemStyle: {
normal: {
//定义一个list,然后根据所以取得不同的值,这样就实现了,
color: function(params) {
var colorList = [
'#FF99CC','#330000','#66CC00','#33CCFF','#999900',
'#FF0099','#C1232B','#663333','#E87C25','#FF0033',
'#0000FF','#9BCA63','#993333','#FF6600','#7F7F7F',
'#660066','#339966','#FF0000','#383838','#336600',
'#336666','#990000','#CCCCFF','#FFFF00','#330033',
];
return colorList[params.dataIndex];
},
//以下为是否显示,显示位置和显示格式的设置了
label: {
show: true,
position: 'top',
}
}
},
//设置柱的宽度,要是数据太少,柱子太宽不美观~
barWidth : '60%',
data : []
}]
};
//通过Ajax获取数据
$.ajax({
type: "post",
url: "cityChart.do",
data : {
session: '2018'
},
dataType : "json", //返回数据形式为json
success : function(result) {
if (result) {
//将返回的category和series对象赋值给options对象内的category和series
//因为xAxis是一个数组 这里需要是xAxis[i]的形式
options.legend.data = result.legend;
options.xAxis[0].data = result.category;
options.series[0].data = result.serisData;
myChart2.hideLoading();
myChart2.setOption(options);
}
},
error : function(errorMsg) {
alert("图表请求数据失败啦!");
}
});
})
});
</script>
</head>
<body>
<!-- 统计图内容占8份 平板和手机统一占12份 -->
<div class="col-xs-12 col-sm-12 col-md-9">
<button type="button" id="lineBtn">折线图</button>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="k_post_chart">
<div id="pic_2" style="width: 100%; height: 400px;"></div>
</div>
</div>
</div>
</body>
</html>
饼图
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>echarts图表</title>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" />
<script type="text/javascript"
src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath}/js/echarts.js"></script>
<script type="text/javascript">
$(function() {
$("#pieBtn").click(function(){
var myChart3 = echarts.init(document.getElementById('pic_3'));
window.onresize = function(){
myChart3.resize();
};
//图表显示提示信息
myChart3.showLoading();
//定义图表options
var options = {
title : {
text : "就业城市统计图",
subtext:'各城市的人数/已就业的总人数*100',
},
tooltip : {
trigger : 'axis'
},
legend : {
data : []
},
toolbox : {
show : true,
feature : {
mark : false
}
},
calculable : true,
series : [{
type: 'pie',
itemStyle: {
normal: {
//定义一个list,然后根据所以取得不同的值,这样就实现了,
color: function(params) {
var colorList = [
'#FF99CC','#330000','#66CC00','#33CCFF','#999900',
'#FF0099','#C1232B','#663333','#E87C25','#FF0033',
'#0000FF','#9BCA63','#993333','#FF6600','#7F7F7F',
'#660066','#339966','#FF0000','#383838','#336600',
'#336666','#990000','#CCCCFF','#FFFF00','#330033',
];
return colorList[params.dataIndex];
},
//以下为是否显示,显示位置和显示格式的设置了
label: {
show: true,
position: 'top',
}
}
},
//设置柱的宽度,要是数据太少,柱子太宽不美观~
barWidth : '60%',
data : []
}]
};
//通过Ajax获取数据
$.ajax({
type: "post",
url: "cityChart.do",
data : {
session: '2018'
},
dataType : "json", //返回数据形式为json
success : function(result) {
var array=[];
var arr = result.serisData;
if (result) {
for(var i=0;i<arr.length;i++){
array[i]={
name:result.category[i],
value:result.serisData[i]
};
}
console.log(array);
//将返回的category和series对象赋值给options对象内series
options.legend.data = result.legend;
options.series[0].data = array;
myChart3.hideLoading();
myChart3.setOption(options);
}
},
error : function(errorMsg) {
alert("图表请求数据失败啦!");
}
});
})
});
</script>
</head>
<body>
<!-- 统计图内容占8份 平板和手机统一占12份 -->
<div class="col-xs-12 col-sm-12 col-md-9">
<button type="button" id="pieBtn">饼图</button>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="k_post_chart">
<div id="pic_3" style="width: 100%; height: 400px;"></div>
</div>
</div>
</div>
</body>
</html>
Controller层代码
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String session = request.getParameter("session");
Map<String, Object> map= empService.getChartData(session);
// 解决json中文乱码
response.setContentType("text/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
JSONObject jsonObject = JSONObject.fromObject(map);
System.out.println(jsonObject);
out.print(jsonObject);
out.flush();
out.close();
}
Service层代码
public Map<String, Object> getChartData(String session) {
Map<String, Object> map = null;
try {
List<Chart> chartList = empDao.selectChartCity(session);
Chart chartOther = empDao.selectOther(session);
Chart chartCount = empDao.selectCount(session);
List<String> category = new ArrayList<String>();
List<String> serisData=new ArrayList<String>();
DecimalFormat df = new DecimalFormat("#.00");
for (Chart chart : chartList) {
category.add(chart.getObtaincity());
serisData.add(df.format(((double)chart.getNum()/chartCount.getCount())*100));
}
category.add("其它");
serisData.add(df.format(((double)chartOther.getNum()/chartCount.getCount())*100));
List<String> legend = new ArrayList<String>(Arrays.asList(new String[] { "百分比" }));// 数据分组
map= new HashMap<String, Object>();
map.put("category", category);
map.put("serisData", serisData);
map.put("legend", legend);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map ;
}
欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位指点,在此表示感激不尽。文章持续更新中…