页面部分

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts柱状图</title>
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript" src="../js/echarts.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
$().ready(function() {
var myChart = echarts.init(document.getElementById('main'));
//图表显示提示信息
myChart.showLoading();
//定义图表options
var options = {
color : [ '#3398DB' ],
title : {
text : "通过Ajax获取数据呈现图标示例",
subtext : "www.stepday.com",
sublink : "http://www.stepday.com/myblog/?Echarts"
},
tooltip : {
trigger : 'axis'
},
legend : {
data : []
},
toolbox : {
show : true,
feature : {
mark : false
}
},
calculable : true,
xAxis : [ {
type : 'category',
data : []
} ],
yAxis : [ {
type : 'value',
splitArea : {
show : true
}
} ],
series : [ {
barWidth : '60%'
} ]
}; //通过Ajax获取数据
$.ajax({
type : "post",
async : false, //同步执行
url : "showEchartBar.action",
dataType : "json", //返回数据形式为json
success : function(result) {
if (result) {
//将返回的category和series对象赋值给options对象内的category和series
//因为xAxis是一个数组 这里需要是xAxis[i]的形式
options.xAxis[0].data = result.category;
options.series = result.series;
options.legend.data = result.legend; myChart.hideLoading();
myChart.setOption(options);
}
},
error : function(errorMsg) {
alert("图表请求数据失败啦!");
}
}); });
</script>
</body>
</html>
<%@ 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>echarts饼状图</title>
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript" src="../js/echarts.js"></script>
</head>
<body>
<!--定义页面图表容器-->
<!-- 必须制定容器的大小(height、width) -->
<div id="main"
style="height: 400px; border: 1px solid #ccc; padding: 10px;"></div> <script type="text/javascript">
$().ready(function() {
var myChart = echarts.init(document.getElementById('main'));
//图表显示提示信息
myChart.showLoading();
//定义图表options
var options = {
title : {
text : '某站点用户访问来源',
subtext : '纯属虚构',
x : 'center'
},
tooltip : {
trigger : 'item',
formatter : "{a} <br/>{b} : {c} ({d}%)"
},
legend : {
orient : 'vertical',
left : 'left',
data : []
},
series : [ {
name : '访问来源',
type : 'pie',
data : []
} ]
};
//通过Ajax获取数据
$.ajax({
type : "post",
async : false, //同步执行
url : "showEchartPie.action",
dataType : "json", //返回数据形式为json
success : function(result) {
if (result) {
options.legend.data = result.legend; //将返回的category和series对象赋值给options对象内的category和series
//因为xAxis是一个数组 这里需要是xAxis[i]的形式
options.series[0].name = result.series[0].name;
options.series[0].type = result.series[0].type;
var serisdata = result.series[0].data; //遍历
/* var datas = [];
for ( var i = 0; i < serisdata.length; i++) {
datas.push({
name : serisdata[i].name,
value : serisdata[i].value
});
}
options.series[0].data = datas; */ //jquery遍历
var value = [];
$.each(serisdata, function(i, p) {
value[i] = {
'name' : p['name'],
'value' : p['value']
};
});
options.series[0]['data'] = value; myChart.hideLoading();
myChart.setOption(options);
}
},
error : function(errorMsg) {
alert("图表请求数据失败啦!");
}
}); });
</script> </body>
</html>
<%@ 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">
<script type="text/javascript" src="../js/echarts.js"></script>
<script type="text/javascript" src="../js/jquery.min.js"></script>
</head>
<title>echarts折线图</title>
<body>
<!--定义页面图表容器-->
<!-- 必须制定容器的大小(height、width) -->
<div id="main"
style="height: 400px; border: 1px solid #ccc; padding: 10px;"></div> <script type="text/javascript">
$().ready(
function() {
var myChart = echarts.init(document.getElementById('main'));
//图表显示提示信息
myChart.showLoading();
//定义图表options
var options = {
title: {
text: "通过Ajax获取数据呈现图标示例",
subtext: "www.stepday.com",
sublink: "http://www.stepday.com/myblog/?Echarts"
},
tooltip: {
trigger: 'axis'
},
legend: {
data: []
},
toolbox: {
show: true,
feature: {
mark: false
}
},
calculable: true,
xAxis: [
{
type: 'category',
data: []
}
],
yAxis: [
{
type: 'value',
splitArea: { show: true }
}
],
series: []
}; //通过Ajax获取数据
$.ajax({
type : "post",
async : false, //同步执行
url : "showEchartLine.action",
dataType : "json", //返回数据形式为json
success : function(result) {
if (result) {
//将返回的category和series对象赋值给options对象内的category和series
//因为xAxis是一个数组 这里需要是xAxis[i]的形式
options.xAxis[0].data = result.category;
options.series = result.series;
options.legend.data = result.legend;
myChart.hideLoading();
myChart.setOption(options);
}
},
error : function(errorMsg) {
alert("图表请求数据失败啦!");
}
}); });
</script>
</body>
</html>

后端java代码

@Controller
@RequestMapping("/echartsJSP")
public class EchartAction { @Autowired
private TotalNumBiz toatlNumBiz;
@Autowired
private VisitBiz visitBiz; @RequestMapping("/showEchartLine")
@ResponseBody
public EchartData lineData() {
System.out.println("折线图");
List<String> category = new ArrayList<String>();
List<Long> serisData=new ArrayList<Long>();
List<TotalNum> list = toatlNumBiz.findAll();
for (TotalNum totalNum : list) {
category.add(totalNum.getWeek());
serisData.add(totalNum.getCount());
}
List<String> legend = new ArrayList<String>(Arrays.asList(new String[] { "总数比较" }));// 数据分组
List<Series> series = new ArrayList<Series>();// 纵坐标
series.add(new Series("总数比较", "line", serisData));
EchartData data = new EchartData(legend, category, series);
return data;
}
@RequestMapping("/showEchartBar")
@ResponseBody
public EchartData BarData() {
System.out.println("柱状图");
List<String> category = new ArrayList<String>();
List<Long> serisData=new ArrayList<Long>();
List<TotalNum> list = toatlNumBiz.findAll();
for (TotalNum totalNum : list) {
category.add(totalNum.getWeek());
serisData.add(totalNum.getCount());
}
List<String> legend = new ArrayList<String>(Arrays.asList(new String[] { "总数比较" }));// 数据分组
List<Series> series = new ArrayList<Series>();// 纵坐标
series.add(new Series("总数比较", "bar", serisData));
EchartData data = new EchartData(legend, category, series);
return data;
}
/**
* 饼状图
* @param <T>
* @return
*/
@RequestMapping("/showEchartPie")
@ResponseBody
public EchartData PieData() {
List<String> legend = new ArrayList<String>();
List<Map> serisData=new ArrayList<Map>(); List<Visit> list = visitBiz.findAll();
for (Visit visit : list) {
Map map =new HashMap();
legend.add(visit.getName());
map.put("value", visit.getValue());
map.put("name",visit.getName());
serisData.add(map);
}
List<Series> series = new ArrayList<Series>();// 纵坐标
series.add(new Series("总数比较", "pie",serisData));
EchartData data = new EchartData(legend,null, series);
return data;
}
}

另外使用EchartsData和Series两个类封装数据

public class EchartData {

    public List<String> legend = new ArrayList<String>();// 数据分组
public List<String> category = new ArrayList<String>();// 横坐标
public List<Series> series = new ArrayList<Series>();// 纵坐标 public EchartData(List<String> legendList, List<String> categoryList,
List<Series> seriesList) {
super();
this.legend = legendList;
this.category = categoryList;
this.series = seriesList;
}
}
public class Series<T>{
public String name; public String type;
public List<T> data;// 这里要用int 不能用String 不然前台显示不正常(特别是在做数学运算的时候) public Series(String name, String type, List<T> data) {
super();
this.name = name;
this.type = type;
this.data = data;
}

测试使用的实体类及其他部分

public class TotalNum {
private Integer id; private String week; private Long count;
public class Visit {
private Integer id; private String name; private Integer value;

基于SpringMVC框架使用ECharts3.0实现折线图,柱状图,饼状图,的绘制(上篇)的更多相关文章

  1. 基于SpringMVC框架使用ECharts3.0实现堆叠条形图的绘制(下篇)

    <script type="text/javascript"> $().ready(function() { var myChart = echarts.init(do ...

  2. Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美

    Android绘图机制(四)--使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美 这里为什么不继续把自定义View写下去呢,因为最近项目 ...

  3. java 柱状图、折线图、饼状图

    1.绘制柱状图: //BarChartTool工具类代码 package GUIview; import HibernateTool.HibernateTools; import ProductCla ...

  4. JupyterLab绘制:柱状图,饼状图,直方图,散点图,折线图

    JupyterLab绘图 喜欢python的同学,可以到 https://v3u.cn/(刘悦的技术博客) 里面去看看,爬虫,数据库,flask,Django,机器学习,前端知识点,JavaScrip ...

  5. ECharts 报表事件联动系列四:柱状图,折线图,饼状图实现联动

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  6. Android之自定义控件实现天气温度折线图和饼状图

    以前写了个天气的APP,最近把他更新了一个版本,就抽取其中的天气温度折现图这个功能写了这篇博客,来与大家分享,希望对你有所帮助. 效果如图: 代码: MainActivity.Java /**** * ...

  7. DevExpress使用之ChartControl控件绘制图表(多坐标折线图、柱状图、饼状图)

    最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...

  8. 【PHP】基于ThinkPHP框架搭建OAuth2.0服务

    [PHP]基于ThinkPHP框架搭建OAuth2.0服务 http://leyteris.iteye.com/blog/1483403

  9. SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图

    java代码 @Controller public class CityAction { @Autowired private CityBiz cityBiz; //柱状图 @RequestMappi ...

随机推荐

  1. alfresco category searches...

    From page 475 of the Alfresco Developer Guide- Category searches use the PATH field, but you constru ...

  2. [转] Autofac创建实例的方法总结

    1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure the component so tha ...

  3. webpack 打包时到底如何组织js

    问题一:引入前端库,方法也是不一样的 比如 lodash.js ,作为一个 chunk 用 html-webpack-plugin 打包到页面里,会生成一个全局变量 window._ ,在其它 js ...

  4. 使用mybatis执行oracle存储过程

    存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验. 1.无输入和输出参数的 ...

  5. Swing JComboBox的使用

    1:JComboBox的使用:类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JCom ...

  6. How to cast List&lt;Object&gt; to List&lt;MyClass&gt; Object集合转换成实体集合

    List<Object> list = getList(); return (List<Customer>) list; Compiler says: cannot cast  ...

  7. Luogu5162 WD与积木(生成函数+多项式求逆)

    显然的做法是求出斯特林数,但没有什么优化空间. 考虑一种暴力dp,即设f[i]为i块积木的所有方案层数之和,g[i]为i块积木的方案数.转移时枚举第一层是哪些积木,于是有f[i]=g[i]+ΣC(i, ...

  8. nginx 前端调度 对后端的app的生存状态的检测

    # cat hosts.conf #app调试 upstream gl-appsrv_pools { server 10.1x0.2xx.1x0:8040; server 10.x9x.20.208: ...

  9. Eigen教程(8)

    整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 原生缓存的接口:Map类 这篇将解释Eigen如何与原生raw C/C++ 数组混合 ...

  10. H2Database聚合函数

    聚合函数(Aggregate Functions) AVG  BOOL_AND  BOOL_OR  COUNT  GROUP_CONCAT MAX  MIN  SUM  SELECTIVITY  ST ...