在echarts的官网上我们可以看到很多的官方实例,很多酷炫的模型都已经设计好了,不过这些模型的数据一般都是在实例中写死,平时在我们项目里可没有这些死数据,如何从后台获取需要的数据,并且把这些数据拼装成echarts需求的json数据,这个对于像我一样的小白可能有点麻烦,这里我把我解决的过程简要的做个总结。
首先获取数据我们可以通过ajax的方式从后台获取数据源并将返回的数据设置成json格式,至于后台的数据得先根据你的echarts图需要的格式设计。比如饼状图需求的数据格式为({ name :张三,value : 666 },{ name :李四,value : 333})
下面我会上具体的代码来说明:
1、首先是在controller上写出获取数据的方法

//这个方法一般用于前台ajax请求获取数据 //一般写在controller中,你这个按照springMVC的注解给这个方法添加访问路径 public Map<String, Object> getData() { int a = 0;// a代表已采集 int b = 0;// b代表等待采集 int c = 0;// c代表延迟未提供 int d = 0;// d代表数据稽核预警 int e = 0;// e代表采集异常 //这里可以通过后台的方法获取数据源,然后对数据进行加工,获取echarts图形需要 //的数据,即我上面设置的abcde List<Resource> collectList = resourceService.getResourceByList(); //之后可以通过foreach循环处理数据或者 for (Resource li : collectList) { //具体处理这里就不写了 } List<String> name = new ArrayList<>(); List<Integer> value = new ArrayList<>(); // 给name传值 name.add("已采集"); name.add("等待采集"); name.add("延迟未提供"); name.add("数据稽核预警"); name.add("采集异常"); // 给value传值,这里的abcde value.add(a); value.add(b); value.add(c); value.add(d); value.add(e); Map<String, Object> data = new HashMap<String, Object>(); data.put("names", name); data.put("values", value); return data; }
2、在jsp页面上引入你需要相关控件,并给你的echarts图画个容器

<!-- 引人三个echarts饼状图 --> <script type="text/javascript" src="<c:url value='/js/echarts.min.js'/>"></script> <!-- 给echarts图一个容器--> <div id="collect" style="width: 200px; height: 230px"> </div>
3、编写获取数据、拼装成对应json格式并写入echarts的javascrpt代码

<script type="text/javascript"> //第一步获取echarts需要的json数据 function queryCollect() { $.ajax({ type : 'GET', url : '${pageContext.request.contextPath}/home/getEcharts', cache : false, dataType : 'json', success : function(data) { if (data != null) { createCollectEcharts(data); } else { art.dialog.alert("操作失败"); } } }) } //第二步将数据在函数中转拼成需要的json格式 function createCollectEcharts(data) { var res = []; var na = []; for (var i = 0, size = data.names.length; i < size; i++) { res.push({ name : data.names[i], value : data.values[i] }); na.push({ name : data.names[i] }); } //第三步将数据填充进饼状图 var myChart = echarts.init(document.getElementById("collect")); myChart.clear(); //alert(); var option = { //color : [ '#0081e3', '#f27366' ], tooltip : { trigger : 'item', formatter : "{a} <br/>{b}: {c} ({d}%)" }, legend : { orient : 'vertical', x : 'left', textStyle : { color : '#C3E2FF' }, data : na }, series : [ { name : '采集来源', type : 'pie', radius : [ '55%', '75%' ], itemStyle : { normal : { label : { show : false }, labelLine : { show : false } } }, data : res } ] }; myChart.setOption(option); } </script>
这样一个完整的饼状图设计就完成了,echarts图的js代码在官网有各种样式,有兴趣的可以去试试别的更酷炫的模型。
最后附上echarts网址:http://echarts.baidu.com/