ECharts通过Ajax动态加载数据到图表
2017-12-22 16:38
633 查看
参考官网:http://echarts.baidu.com/echarts2/doc/doc.html#引入ECharts2
要展示的图表像这样:
现在开始前后端代码展示。by the way,使用的开发框架为nutz,重点还是echarts数据。不要本末倒置。
1.从官网下载包
使用其中的dist文件夹和echarts.js,将dist文件夹和echarts.js放在工程的js目录下。
2.前端js代码echartsOneTest.jsp:
3.后端java代码 ,
EChartsModule.java
EchartsEntity.java
要展示的图表像这样:
现在开始前后端代码展示。by the way,使用的开发框架为nutz,重点还是echarts数据。不要本末倒置。
1.从官网下载包
使用其中的dist文件夹和echarts.js,将dist文件夹和echarts.js放在工程的js目录下。
2.前端js代码echartsOneTest.jsp:
<%@ page contentType="text/html;charset=UTF-8" %> <html> <head> <title>统计</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <%@ include file="/WEB-INF/jsp/tag.jsp" %> <%@ include file="/WEB-INF/jsp/common_css.jsp" %> <%@ include file="/WEB-INF/jsp/common_js.jsp" %> <%@ include file="/WEB-INF/jsp/common_tool.jsp" %> </head> <body> <div> <button onclick="getJson()">查询</button> </div> <div id="main" style="height:400px;"></div> <%--echarts.js的路径可以随便放,只要这里能获取到就行了--%> <script src="../../static/js/echarts.js"></script> <script type="text/javascript"> var myChart;//定义一个全局的图表变量,供后面动态加载时使用 require.config({ paths: { echarts: '../../static/js/dist' //将dist文件夹和echarts.js放在同一目录下 } }); require( [ 'echarts', 'echarts/chart/line', // 按需加载所需图表,如需动态类型切换功能,别忘了同时加载相应图表 'echarts/chart/bar' ], function (ec) { myChart = ec.init(document.getElementById('main')); //下面的option可以为空{},ajax动态添加数据时会加上相应的属性 //var option = {}; var option = { legend: { data:['蒸发量','降水量'] }, xAxis : { data : [] }, yAxis : {}, series : [ { name:'蒸发量', type:'bar', data:[] }, { name:'降水量', type:'bar', data:[] } ] }; myChart.setOption(option); } ); function getJson() { //获取数据时显示加载状态图 myChart.showLoading(); var months=[];//用来盛放X轴坐标值:月份 var evapCapacitys=[];//用来盛放Y坐标值:蒸发量 var precipitations=[];//用来盛放Y坐标值:降雨量 $.ajax({ type : "post", async : true, //异步请求 url : "${ctx}/echarts/getJson", data : {}, dataType : "json", success : function(result) { if (result.status) { var list = result.list; for(var i=0;i<list.length;i++){ months.push(list[i].month); //遍历月份并填入数组 } for(var i=0;i<list.length;i++){ evapCapacitys.push(list[i].evapCapacity); //遍历蒸发量并填入数组 } for(var i=0;i<list.length;i++){ precipitations.push(list[i].precipitation); //遍历降水量并填入数组 } myChart.hideLoading(); //隐藏加载动画 myChart.setOption({ //加载数据图表 tooltip : { trigger: 'axis' }, legend: { data:['蒸发量','降水量'] }, toolbox: { show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar']}, restore : {show: true}, saveAsImage : {show: true} } }, calculable : true, xAxis: { data: months }, yAxis:{},//注意一定不能丢了这个,不然图表Y轴不显示 series: [{ // 根据名字对应到相应的系列,并且要注明type name: '蒸发量', type:'bar', data: evapCapacitys },{ // 根据名字对应到相应的系列,并且要注明type name: '降水量', type:'bar', data: precipitations }] }); } }, error : function(errorMsg) { //请求失败时执行该函数 alert("图表请求数据失败!"); myChart.hideLoading(); } }); } </script> </body> </html>
3.后端java代码 ,
EChartsModule.java
package com.kp.module; import com.kp.entity.EchartsEntity; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import java.util.ArrayList; import java.util.List; /** * Created by admin on 2017/12/22. */ @IocBean @At("/echarts") public class EChartsModule { @At("/index") @Ok("jsp:jsp.echartsOneTest") public void index() { } @At("/getJson") @Ok("json") public NutMap getJson(){ NutMap nutMap = new NutMap(); List<EchartsEntity> list = new ArrayList<>(); list.add(new EchartsEntity("1月份",2.0f, 2.6f)); list.add(new EchartsEntity("2月份",4.9f, 5.9f)); list.add(new EchartsEntity("3月份",7.0f, 9.0f)); list.add(new EchartsEntity("4月份",23.2f, 26.4f)); nutMap.put("list", list); nutMap.put("status", "ok"); return nutMap; } }
EchartsEntity.java
package com.kp.entity; /** * Created by admin on 2017/12/22. */ public class EchartsEntity { private String month; private Float evapCapacity; private Float precipitation; public EchartsEntity(String month, Float evapCapacity, Float precipitation) { this.month = month; this.evapCapacity = evapCapacity; this.precipitation = precipitation; } public String getMonth() { return month; } public void setMonth(String month) { this.month = month; } public Float getEvapCapacity() { return evapCapacity; } public void setEvapCapacity(Float evapCapacity) { this.evapCapacity = evapCapacity; } public Float getPrecipitation() { return precipitation; } public void setPrecipitation(Float precipitation) { this.precipitation = precipitation; } }
相关文章推荐
- Echarts通过Ajax实现动态数据加载
- Echarts3通过ajax动态获取数据,30秒定时图表数据,设置图表线条颜色和粗细
- Echarts通过Ajax实现动态数据加载
- Echarts图表通过Ajax动态更新数据
- Echarts通过Ajax实现动态数据加载
- Echarts使用及动态加载图表数据 折线图X轴数据动态加载
- Echarts使用及动态加载图表数据 折线图X轴数据动态加载
- 动态的把数据显示在table中,点击某一行的删除按钮实现该行的删除(通过ajax实现页面的无刷新加载)
- Echarts动态加载图表数据
- 通过ajax动态加载echarts——简单关系网络实例
- 使用Echarts和Ajax动态加载数据进行大数据可视化
- 最近项目要求开发一个echarts的小功能图表,需要动态加载数据,现在做完后把源码拷上来
- echarts图表动态获取后台数据详解(三)--ajax跨域请求
- echarts画圆环统计图并加载动态数据 (ajax获取数据)
- echarts在.Net中使用实例(二) 使用ajax动态加载数据
- Echarts动态加载折线图X Y轴数据图表数据
- 使用Echarts柱形图表动态加载数据且颜色的独立设置 bar
- echarts 图表 展示 练习二 (ajax 后台加载数据)
- Echarts教程之通过Ajax实现动态加载折线图的方法