eCharts图表演示
比如说,公司现在接一个项目,这个中信银行,针对之前所有的贷款、大 小客户,要做出来图表系统(演示和查看)、报表系统(用来打印)。
郑州的大数据产业局,黄强:图表系统。
官网:
https://echarts.apache.org/zh/index.html
源于百度
一.超简单入门
1.引入 ECharts
<script src="echarts.min.js"></script>
2.绘制一个简单的图表
在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器。这个DOM容器的作用,就是一块画布。图表在这个画布上进行绘制。
<body><!-- 为 ECharts 准备一个具备大小(宽高)的 DOM --><div id="main" style="width: 600px;height:400px;"></div>
</body>
3.绘制
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>ECharts</title><!-- 引入 echarts.js --><script src="echarts.min.js"></script>
</head>
<body><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="width: 600px;height:400px;"></div><script type="text/javascript">// 基于准备好的dom,初始化echarts实例,init初始化操作;//var myChart=echarts.init($("#main")),这种形式出不来。这里用的原生js来获取main对象var myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据,option如何配置的呢?//采用的是什么样的形式???json格式//option={title:{}}var option = {title: {text: 'ECharts 入门示例'},tooltip: {}, //提示信息legend: {data:['销量']},xAxis: {//data:数据,x 轴的数据data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);</script>
</body>
</html>
4.效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6BSiETFa-1672666125763)(E:\政通路\课堂笔记\S2\echarts\assets\image-20200825125201105.png)]
二.引入项目
1.在webapp下增加对js的引用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CN3s8Iqd-1672666125765)(E:\政通路\课堂笔记\S2\echarts\assets\image-20200825125252486.png)]
2.echarts页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>测试echarts案例</title><script src="static/js/echarts.min.js"></script><script src="static/js/jquery-2.1.0.min.js"></script><script></script>
</head>
<body><%--构建div主体--%><div id="main" style="width: 600px;height: 400px;"></div><script type="text/javascript">$(function() {// 初始化var myChart = echarts.init(document.getElementById('main'));//var myChart = echarts.init($('#main')[0]); // 注意:这里init方法的参数的javascript对象,使用jQuery获取标签时,要将jQuery对象转成JavaScript对象;// 配置图标参数var options = {title: {text: '员工工资',show: true, // 是否显示标题subtext: '实发工资',textStyle: {fontSize: 18 // 标题文字大小}},tooltip: {// trigger: 'axis',// axisPointer: {// type: 'shadow'// }trigger: 'item',formatter: '{a} <br/>{b} : {c} ({d}%)'},legend: {//orient: 'vertical',//left: 'left',data: ['销量']},// X轴xAxis: {data: [] // 异步请求时,这里要置空},// Y轴yAxis: {},series: [{name: '销量',type: 'pie', // 设置图表类型为柱状图data: [] // 设置纵坐标的刻度(异步请求时,这里要置空)}]};// 给图标设置配置的参数myChart.setOption(options);myChart.showLoading(); // 显示加载动画
// 异步请求加载数据$.ajax({url: 'selectSalary',type: 'get',dataType: 'json',success: function(data) {var names = [];var fa = [];var result=[];console.log(names)$.each(data, function(index, obj) {names.push(obj.name);fa.push(obj.value);// result[index]["name"]=obj.EName;//result[index]["value"]=obj.fa;})console.log(JSON.stringify(result))myChart.hideLoading(); // 隐藏加载动画myChart.setOption({legend: {/*//图例垂直排列orient: 'vertical',*/type: 'scroll',orient: 'vertical',padding:[80,50,0,0],x: 'left',data: names},xAxis: {data: []},yAxis:{data:[]},series: [{name: '工资',type: 'pie', // 设置图表类型为柱状图data: data // 设置纵坐标的刻度}]});},error:function (data) {console.log(data);}});});</script>
</body>
</html>
核心代码:
异步加载
({url: 'selectSalary',type: 'get',dataType: 'json',success: function(data) {var names = [];var fa = [];var result=[];console.log(names)$.each(data, function(index, obj) {names.push(obj.name);fa.push(obj.value);// result[index]["name"]=obj.EName;//result[index]["value"]=obj.fa;})console.log(JSON.stringify(result))myChart.hideLoading(); // 隐藏加载动画myChart.setOption({legend: {/*//图例垂直排列orient: 'vertical',*/type: 'scroll',orient: 'vertical',padding:[80,50,0,0],x: 'left',data: names},xAxis: {data: []},yAxis:{data:[]},series: [{name: '工资',type: 'pie', // 设置图表类型为柱状图data: data // 设置纵坐标的刻度}]});},error:function (data) {console.log(data);}
});
3.控制器
SalaryController
@Controller
public class SalaryController {@AutowiredSalaryService salaryService;@RequestMapping("/selectSalary")@ResponseBodypublic List<Map<String,Object>> selectSalary(){List<Map<String,Object>> salaries = salaryService.selectSalary();return salaries;}
}
4.service层
public interface SalaryService {List<Map<String,Object>> selectSalary();
}
@Service("salaryService")
public class SalaryServiceImpl implements SalaryService {@AutowiredSalaryDao salaryDao;@Overridepublic List<Map<String,Object>> selectSalary() {return salaryDao.selectSalary();}
}
5.dao层和xml实现
public interface SalaryDao {List<Map<String,Object>>selectSalary();
}
<mapper namespace="com.aaa.mapper.SalaryDao">
<!--注意,我这里使用了别名,???--><select id="selectSalary" resultType="java.util.Map">select e.EName 'name',s.fa 'value' from emp eINNER JOIN salary son e.EID=s.EID</select>
</mapper>
6.效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojcq5d1O-1672666125767)(E:\政通路\课堂笔记\S2\echarts\assets\image-20200825125816288.png)]
扩展:
柱状图,精炼格式:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>我的echarts案例</title><script src="static/js/jquery-2.1.0.min.js"></script><script src="static/js/echarts.min.js"></script>
</head>
<body><%--1.设计一个div--%><div id="main" style="width:600px;height: 400px;"></div><%--2.js 进行异步调用--%><script>function loadData(option) {$.ajax({type : 'get', //传输类型async : false, //同步执行url : 'salary/selectSalary', //web.xml中注册的Servlet的url-patterndata : {},dataType : 'json', //返回数据形式为jsonsuccess : function(result) {if (result) {//初始化xAxis[0]的dataoption.xAxis[0].data = [];for (var i=0; i<result.length; i++) {option.xAxis[0].data.push(result[i].name);}//初始化series[0]的dataoption.series[0].data = [];for (var i=0; i<result.length; i++) {option.series[0].data.push(result[i].value);}}},error : function(errorMsg) {alert("加载数据失败");}});//AJAX}//loadData()var myChart = echarts.init(document.getElementById('main'));var option = {title: {text: 'ECharts技术(柱状图)'},tooltip : {show : true},legend : {data : [ '工资' ]},xAxis : [ {type : 'category'} ],yAxis : [ {type : 'value'} ],series : [ {name : '销量',type : 'bar'} ]};//加载数据到optionloadData(option);//设置optionmyChart.setOption(option);</script>
</body>
</html>
: [ {type : 'category'} ],yAxis : [ {type : 'value'} ],series : [ {name : '销量',type : 'bar'} ]};//加载数据到optionloadData(option);//设置optionmyChart.setOption(option);</script>
</body>
</html>