Echarts(数据可视化)
入门案例:
<%@ 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> <head> <base href="<%=basePath%>"> <title>My JSP 'layout.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath }/js/echarts/echarts.js"></script> <style type="text/css"> .divClass{ width: 800px; height:600px; border: 1px solid black; float: left; margin-right: 5px } </style> </head> <body> <!-- ==================================================通过JavaScript加载数据======================================================= --> <div id="charts" class="divClass"></div> <script type="text/javascript"> $(function(){ var myChart = echarts.init(document.getElementById("charts")); //生成图表数据 var option = { title : { text: '某站点用户访问来源', x:'center' }, tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient: 'vertical', left: 'left', data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎'] }, series : [ { name: '访问来源', type: 'pie', radius : '55%', center: ['50%', '60%'], data:[ {value:335, name:'直接访问'}, {value:310, name:'邮件营销'}, {value:234, name:'联盟广告'}, {value:135, name:'视频广告'}, {value:1548, name:'搜索引擎'} ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; myChart.setOption(option); }); </script> <!-- ========================================================================================================================= --> <!-- ==================================================通过json文件加载数据======================================================= --> <div id="charts1" class="divClass"></div> <script type="text/javascript"> $(function(){ /********************************json数据格式************************************* { "data":[ {"value":335, "name":"直接访问"}, {"value":310, "name":"邮件营销"}, {"value":234, "name":"联盟广告"}, {"value":135, "name":"视频广告"}, {"value":1548, "name":"搜索引擎"} ], "name":["直接访问","邮件营销","联盟广告","视频广告","搜索引擎"] } ********************************************************************************/ $.get('${pageContext.request.contextPath }/json/echart_data.json',function(data){ var myChart = echarts.init(document.getElementById("charts1")); //生成图表数据 myChart.setOption({ //标题属性 title : { text: '某站点用户访问来源', x:'center' }, //提示框属性 tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, //图例属性 legend: { orient: 'vertical', left: 'left', data: data.name }, //数据 series : [ { name: '访问来源', type: 'pie', radius : '55%', center: ['50%', '60%'], data:data.data } ],itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }); }); }); </script> <!-- ========================================================================================================================= --> </body> </html>
页面效果:
json文件格式不是关键。只要需要的数据在json串中就有办法获取出来,生成图表。
SSH框架查询数据库中的数据生成图表:
Action中加载数据的方法:
public String chart(){ /* * 1.调用service#industryCount() * 2.将返回的结果集保存转发到页面 */ List<Object[]> list = customerService.getIndustryCount(); ActionContext.getContext().put("list", list); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/json;charset=UTF-8"); //将PageBean转换为JSON串,返回给页面 //将查询结果转换为json串 String json = JSONArray.fromObject(list).toString(); System.out.println(json); //返回json数据 try { response.getWriter().print(json); } catch (IOException e) { e.printStackTrace(); } return null; }
生成的json字符串格式:
页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <TITLE>统计列表</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK href="${pageContext.request.contextPath }/css/Style.css" type=text/css rel=stylesheet> <LINK href="${pageContext.request.contextPath }/css/Manage.css" type=text/css rel=stylesheet> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath }/js/echarts.js"></script> <script type="text/javascript"> $(function(){ $.get('CustomerAction_chart',function(data){ var myChart = echarts.init(document.getElementById("chart")); //生成图表数据 myChart.setOption({ //标题属性 title : { text: '本系统客户来源', x:'center' }, //提示框属性 tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, //图例属性 legend: { orient: 'vertical', left: 'left', data: (function(){ var res = []; for(var i=0;i<data.length;i++){ res.push(data[i][0]); } return res; })() }, //数据 series : [ { name: '客户来源', type: 'pie', radius : '55%', center: ['50%', '60%'], data:function(){ var res = []; for(var i=0;i<data.length;i++){ res.push({ name:data[i][0], value:data[i][1] }); } return res; }() } ],itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }); }); }); </script> <META content="MSHTML 6.00.2900.3492" name=GENERATOR> </HEAD> <BODY> <div id="chart" style="width:600px;height: 400px;background: wihte"></div> </BODY> </HTML>