效果图:
通过工具栏切换成折线图:
1.部署好springMVCproject
2.*****在lib中增加ECharts-2.2.4.jar 下载地址:http://git.oschina.net/free/ECharts
3.由于要用到fastJson所以还要导入其所需的jar包fastjson-1.2.5-sources.jar 和fastjson-1.2.5.jar
4.springMVC的服务层的代码:EchartsT.java
package com.service;
import com.github.abel533.echarts.Label;
import com.github.abel533.echarts.Option;
import com.github.abel533.echarts.Title;
import com.github.abel533.echarts.axis.CategoryAxis;
import com.github.abel533.echarts.axis.ValueAxis;
import com.github.abel533.echarts.code.LineType;
import com.github.abel533.echarts.code.Magic;
import com.github.abel533.echarts.code.MarkType;
import com.github.abel533.echarts.code.Orient;
import com.github.abel533.echarts.code.PointerType;
import com.github.abel533.echarts.code.SelectedMode;
import com.github.abel533.echarts.code.Tool;
import com.github.abel533.echarts.code.Trigger;
import com.github.abel533.echarts.code.X;
import com.github.abel533.echarts.code.Y;
import com.github.abel533.echarts.data.Data;
import com.github.abel533.echarts.data.PointData;
import com.github.abel533.echarts.feature.MagicType;
import com.github.abel533.echarts.series.Bar;
import com.github.abel533.echarts.series.Funnel;
import com.github.abel533.echarts.series.Line;
import com.github.abel533.echarts.series.Map;
import com.github.abel533.echarts.series.MapLocation;
import com.github.abel533.echarts.series.Pie;
import com.github.abel533.echarts.style.ItemStyle;
import com.github.abel533.echarts.style.LineStyle;
/**
* @author lyx
*
* 2015-6-12下午1,34,50
*
*springechart.com.service.EchartsT
*/
public class EchartsT {
/**
* @return
* 堆积图
*/
public Option stackChart()
{
Option option = new Option();
//标题
option.title("获取信息途径所占比重");
//提示框
option.tooltip().trigger(Trigger.axis);
option.tooltip().axisPointer().type(PointerType.shadow);
//图例说明
option.legend().data("直接訪问","邮件营销","联盟广告","视频广告","搜索引擎","百度","谷歌","必应","其它");
//工具栏
option.toolbox().show(true).orient(Orient.vertical).x(X.right).y(Y.center)
.feature(Tool.mark,Tool.dataView,Tool.dataZoom,new MagicType(Magic.bar,Magic.line,Magic.stack,Magic.tiled),
Tool.restore,Tool.saveAsImage);
//是否启用拖拽重计算特性
option.calculable(true);
//x轴 -类目轴
option.xAxis(new CategoryAxis().data("周一","周二","周三","周四","周五","周六","周日"));
//Y轴 -值轴
option.yAxis(new ValueAxis());
//系列 ,当中stack表示堆栈图的设置
Bar bar1 = new Bar("直接訪问");
bar1.data(320, 332, 301, 334, 390, 330, 320);
Bar bar2 = new Bar("邮件营销");
bar2.stack("广告");
bar2.data(120, 132, 101, 134, 90, 230, 210);
Bar bar3 = new Bar("联盟广告");
bar3.stack("广告");
bar3.data(220, 182, 191, 234, 290, 330, 310);
Bar bar4 = new Bar("视频广告");
bar4.stack("广告");
bar4.data(150, 232, 201, 154, 190, 330, 410);
Bar bar5 = new Bar("搜索引擎");
bar5.data(862, 1018, 964, 1026, 1679, 1600, 1570);
//标记线
bar5.markLine().itemStyle().normal().lineStyle(new LineStyle().type(LineType.dashed));
bar5.markLine().data(new PointData().type(MarkType.min),new PointData().type(MarkType.max));
Bar bar6 = new Bar("百度");
bar6.stack("搜索引擎");
bar6.data(620, 732, 701, 734, 1090, 1130, 1120);
Bar bar7 = new Bar("谷歌");
bar7.stack("搜索引擎");
bar7.data(120, 132, 101, 134, 290, 230, 220);
Bar bar8 = new Bar("必应");
bar8.stack("搜索引擎");
bar8.data(60, 72, 71, 74, 190, 130, 110);
Bar bar9 = new Bar("其它");
bar9.stack("搜索引擎");
bar9.data(62, 82, 91, 84, 109, 110, 120);
//加入到系列中
option.series(bar1,bar2,bar3,bar4,bar5,bar6,bar7,bar8,bar9);
return option;
}
}
5.控制层的代码:echartsContr.java
package com.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSON;
import com.github.abel533.echarts.Option;
import com.service.EchartsT;
/**
* @author lyx
*
* 2015-6-12下午1:36:51
*
*springechart.com.controller.echartsContr
*/
@Controller
@RequestMapping("/echarts")
public class echartsContr {
EchartsT ech = new EchartsT();
/**
* @param res
* @return
*
* 堆栈图
*/
@RequestMapping("/stackChart")
public String stackChart(HttpServletRequest res)
{
Option option = ech.stackChart();
String opt = JSON.toJSONString(option);
res.setAttribute("option", opt);
return "/ec";
}
}
6. ec.jsp 页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:600px"></div>
<span style="white-space:pre"> </span><script type="text/javascript" src="../js/echarts.js"></script>
<script type="text/javascript">
//路径配置
require.config({
paths:{
echarts: '../js'
}
});
//获得后台传过来的JSON数据
var opt =${option};
//设置主要样式
require(
[ //须要什么图形就载入什么图形 这里仅仅用到了柱状图,仅仅需载入bar即可
'echarts',
'echarts/chart/bar',//柱状图
'echarts/chart/line', //折线
'echarts/chart/pie', //椭圆
'echarts/chart/map', //地图
'echarts/chart/funnel' //漏斗
],
function(ec){
//初始化echart对象
var chart =ec.init(document.getElementById('main'));//ec.init( $("#main"));
chart.setOption(opt);
});
</script>
</body>
</html>
7.生成后的页面源代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:600px"></div>
<!-- ECharts单文件引入 -->
<!-- <script src="http://echarts.baidu.com/build/dist/echarts.js"></script> -->
<script type="text/javascript" src="../js/echarts.js"></script>
<!-- <script type="text/javascript" src="js/echarts-all.js"></script> -->
<script type="text/javascript">
//路径配置
require.config({
paths:{
echarts: '../js'
}
});
//获得后台传过来的JSON数据
var opt ={"calculable":true,"legend":{"data":["直接訪问","邮件营销","联盟广告","视频广告","搜索引擎","百度","谷歌","必应","其它"]},"series":[{"data":[320,332,301,334,390,330,320],"name":"直接訪问","type":"bar"},{"data":[120,132,101,134,90,230,210],"name":"邮件营销","stack":"广告","type":"bar"},{"data":[220,182,191,234,290,330,310],"name":"联盟广告","stack":"广告","type":"bar"},{"data":[150,232,201,154,190,330,410],"name":"视频广告","stack":"广告","type":"bar"},{"data":[862,1018,964,1026,1679,1600,1570],"markLine":{"data":[{"type":"min"},{"type":"max"}],"itemStyle":{"normal":{"lineStyle":{"type":"dashed"}}}},"name":"搜索引擎","type":"bar"},{"data":[620,732,701,734,1090,1130,1120],"name":"百度","stack":"搜索引擎","type":"bar"},{"data":[120,132,101,134,290,230,220],"name":"谷歌","stack":"搜索引擎","type":"bar"},{"data":[60,72,71,74,190,130,110],"name":"必应","stack":"搜索引擎","type":"bar"},{"data":[62,82,91,84,109,110,120],"name":"其它","stack":"搜索引擎","type":"bar"}],"title":{"text":"获取信息途径所占比重"},"toolbox":{"feature":{"mark":{"lineStyle":{"color":"#1e90ff","type":"dashed","width":2},"show":true,"title":{"mark":"辅助线开关","markClear":"清空辅助线","markUndo":"删除辅助线"}},"dataView":{"lang":["数据视图","关闭","刷新"],"readOnly":false,"show":true,"title":"数据视图"},"dataZoom":{"show":true,"title":{"dataZoom":"区域缩放","dataZoomReset":"区域缩放后退"}},"magicType":{"show":true,"title":{"line":"折线图切换","stack":"堆积","bar":"柱形图切换","tiled":"平铺"},"type":["bar","line","stack","tiled"]},"restore":{"show":true,"title":"还原"},"saveAsImage":{"lang":["点击保存"],"show":true,"title":"保存为图片","type":"png"}},"orient":"vertical","show":true,"x":"right","y":"center"},"tooltip":{"axisPointer":{"type":"shadow"},"trigger":"axis"},"xAxis":[{"data":["周一","周二","周三","周四","周五","周六","周日"],"type":"category"}],"yAxis":[{"type":"value"}]};
//设置主要样式
require(
[
'echarts',
'echarts/chart/bar',
'echarts/chart/line',
'echarts/chart/pie',
'echarts/chart/map',
'echarts/chart/funnel'
],
function(ec){
//初始化echart对象
var chart =ec.init(document.getElementById('main'));//ec.init( $("#main"));
chart.setOption(opt);
});
</script>
</body>
</html>
8.project完毕整代码下载:
參考站点:http://git.oschina.net/free/ECharts