ECharts小结

1 篇文章 0 订阅

ECharts是一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上
在项目里,我主要使用了柱状图和饼状图。具体可以参考ECharts官网

柱状图

要在项目中使用图表进行统计,那么数据必然是动态变化的,因此我们需要使用ajax动态获取数据,具体可以参考 ECharts异步数据加载和更新,点击编辑实例即可看到代码,柱状图主要数据主要来自于X轴数据和Y轴数据,封装到ajax的data里,使用data调用即可
下边是自己写的实例:
在这里插入图片描述
首先需要在HTML中创建一个div,并且引入echarts.js

<script type="text/javascript" src="js/echarts.js"></script>
<div id="main"></div>

下边需要在js中进行配置

function makeChart () {   //初始化echarts对象
    var main = document.getElementById('main');
    var div = document.createElement('div');
    var width = document.body.clientWidth;
    div.style.cssText = width/3.5 + 'px; height:290px';
    main.appendChild(div);
    return echarts.init(div);
}

function makeXl (data) {    //图表实现
    var chart = makeChart();
    var option = {
    	title: {
	        text: '学历统计',
	        x:'center'
	    },
		xAxis: {
	        type: 'category',
	        triggerEvent:true,   //设置x轴可以点击
	        data: data.xXlList			
	    },
	    yAxis: {
	        type: 'value'
	    },
	    series: [{
	            data: data.yXlList,		
	        type: 'bar',
	        itemStyle: {
				normal: {
					color: function(params) {
                        // build a color map as your need.
                        var colorList = [
							'#FC8D52','#48CFAE','#EC87BF','#FFCE55','#ED5555','#FC8D52','#48CFAE'
                        ];
                        return colorList[params.dataIndex]
                    },
					label: {
						show: true, //开启显示
						position: 'top', //在上方显示
						textStyle: { //数值样式
							color: 'black',
							fontSize: 16
						}
					}
				}
			}
	    }]
    }

    chart.setOption(option);
    chart.on('click', function (params) {    //设置点击事件
    	var xl;
    	if(params.componentType == "xAxis"){
    		xl = params.value;   //x轴的字
    	}else{
    		xl = params.name ;	//选中柱状图x轴的字,params.value是数值
    	}
//    	xl = encodeURIComponent(xl);
    	xl = encodeURI(encodeURI(xl));
    	var randomNum1 = Math.random()*1000;
		//跳转url  
		var tourl = "/d/rck?m=qtfxDataView&xl="+xl+"&dw="+$("#dw").val();
		//替换按钮的id 需要修改   宽度高度 自己根据自己页面设置
		f_chooseUsers('xl'+randomNum1,'xl'+randomNum1,tourl,'windowOpenContent','fulliframe',800,420,'autoOpen','学历统计');

    });
}

那么看一下ajax操作

$.ajax({
			type:"post",
			async:false,
			url:jspath+"/d/rck?m=qtfxData",
			data:{"dw":$("#dw").val()},
			cache: false,
			dataType:"json",
			success: function(data){
				makeXl(data[0]);
				$("#show_tongyong_kingdee").remove();
			},
			error:function(){
				alert("操作失败,请联系系统管理员");
			}
		});

后端Java代码,是把两个list集合放入map中,然后返给ajax,两个集合分别代表X和Y轴数据。

List list = rckBo.tjXl(pojo);
List<Map<String, Object>> listmapList = list;
List<Object> xXlList = new ArrayList<Object>();
List<Object> yXlList = new ArrayList<Object>();
for (Map<String, Object> map : listmapList) {    //构造数据
	System.out.println(map.get("xxmc")+"**"+map.get("count"));
	xXlList.add(map.get("xxmc"));
	yXlList.add(map.get("count"));
}
dataMap.put("xXlList", xXlList);
dataMap.put("yXlList", yXlList);
JSONArray ja = new JSONArray();
ja.add(dataMap);    //在这里使用的框架较老,是用这种方式返回的json
response.setCharacterEncoding("GBK");
response.getWriter().write(ja.toString());

饼状图

图形如下:
在这里插入图片描述
废话就不再多说了,直接上代码,会在 代码里写相关注释
需要的主要数据是

[
      {value:335, name:'男'},
      {value:310, name:'女'}        
]
function makeChartSex () {   //初始化echarts,设置大小
    var main = document.getElementById('mainSex');
    var div = document.createElement('div');
    var width = document.body.clientWidth;
    div.style.cssText = width/3 + 'px; height:290px';
    main.appendChild(div);
    return echarts.init(div);
}

function makeSex (data) {   //主要配置
    var chart = makeChartSex();
    var option = {
		 title : {
		        text: '性别比例',
		        x:'center'
		    },
		    tooltip : {
		        trigger: 'item',
		        formatter: "{a} <br/>{b} : {c} ({d}%)" 
		    },
		    
		    series : [
		        {
		            name: '',
		            type: 'pie',
		            radius : '55%',
		            center: ['50%', '60%'],
		            data: data.listXB,    //取数据,这里数据是键值对,需要后台封装对象里
		            itemStyle: {
		                emphasis: {
		                    shadowBlur: 10,
		                    shadowOffsetX: 0,
		                    shadowColor: 'rgba(0, 0, 0, 0.5)'
		                },
		                normal:{    //显示文字+百分比
	                        label:{ 
	                            show: true, 
	                            formatter: '{b} : {c} ({d}%)' //设置显示的文字是什么,eg:男:4243(75%)
	                        }, 
	                        color: function(params) {
	                            // build a color map as your need.
	                            var colorList = [
	                                '#5D9CEC','#EC87BF'
	                            ];
	                            return colorList[params.dataIndex]
	                        },
	                        labelLine :{show:true} 
	                    } 
		            }
		        }
		    ]
    }

    chart.setOption(option);
    chart.on('click', function (params) {   //设置点击事件
    	var sex;
    	if(params.componentType == "xAxis"){
    		sex = params.value;   //x轴的字
    	}else{
    		sex = params.name ;	//选中柱状图x轴的字,params.value是数值
    	}
    	sex = encodeURI(encodeURI(sex));
    	var randomNum1 = Math.random()*1000;
		//跳转url  
		var tourl = "/d/rck?m=qtfxDataView&sex="+sex+"&dw="+$("#dw").val();
		//替换按钮的id 需要修改   宽度高度 自己根据自己页面设置
		f_chooseUsers('sex'+randomNum1,'sex'+randomNum1,tourl,'windowOpenContent','fulliframe',800,420,'autoOpen','性别比例');

    });
}

//ajax操作
$.ajax({
	type:"post",
	async:false,
	url:jspath+"/d/rck?m=qtfxData",
	data:{"dw":$("#dw").val()},
	cache: false,
	dataType:"json",
	success: function(data){
		makeSex(data[0]);
	},
	error:function(){
		alert("操作失败,请联系系统管理员");
	}
	
});

后台Java代码如下:

//性别
List list1 = rckBo.tjXb(pojo);
List<Map<String, Object>> listmapList1 = list1;
List<Property> listXB = new ArrayList<Property>();
for (Map<String, Object> map : listmapList1) {
	Property property = new Property();  //属性是name,value
	property.setName(map.get("xxmc")+"");
	property.setValue(map.get("count")+"");
	listXB.add(property);
}
dataMap.put("listXB", listXB);
JSONArray ja = new JSONArray();
ja.add(dataMap);
response.setCharacterEncoding("GBK");
response.getWriter().write(ja.toString());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值