echarts后台获取数据,前台实现饼图显示并自定义图形的数据表展示格式

1.实现效果图:

切换前效果:

切换后效果:

 

2.关键的js代码:

var myChart = echarts.init(document.getElementById('aaa'));
// 为echarts对象加载数据 
var opts = "";
$.post("/getUnitAllPathData",
function(data) {
    opts = formatEchartsOpts(data);
    myChart.setOption(opts);
});

function formatEchartsOpts(map) {
    var title = "";
    var xName = "";
    var yName = "";
    var xArr = "";
    var yArr = "";

    if (map != null) {
        title = map.title;
        xName = map.xName;
        yName = map.yName;
        xArr = map.xArr;
        yArr = map.yArr;
    }
    return setSimplePieOption(title, xName, yName, xArr, yArr);
}

var setSimplePieOption = function(title, xName, yName, xArr, yArr) {
    var pData = [];
    for (var i = 0; i < xArr.length; i++) {
        var obj = {
            value: yArr[i],
            name: xArr[i]
        }
        pData.push(obj);
    }
    var option = {
        title: {
            text: title,
            x: 'left'
        },
        color: ['#66ADE1', '#41C8DB', '#BD52C6', '#E8C83F', '#F28743'],
        tooltip: {
            trigger: 'item',
            formatter: "{a} <br/>{b} : {c} ({d}%)"
        },
        toolbox: {
            show: true,
            right: 30,
            feature: {
                dataView: {
                    show: true,
                    title: '数据表',
                    lang: [title + "——数据表", "收起", "刷新"],
                    optionToContent: function(opt) {
                        var series = opt.series;
                        var table = '<div style="overflow-x:scroll;"><table style="width:max-content;text-align:center;" cellspacing="0" cellpadding="4" border="1"><tbody><tr>' + '<td>' + xName + '</td>'
                        for (var i = 0,l = xArr.length; i < l; i++) {
                            table += '<td>' + xArr[i] + '</td>'
                        }
                        table += '</tr><tr>' + '<td>' + yName + '</td>';
                        for (var i = 0,l = xArr.length; i < l; i++) {
                            table += '<td>' + yArr[i] + '</td>'
                        }
                        table += '</tr>'table += '</tbody></table>';
                        return table;
                    },
                    readOnly: true
                },
                saveAsImage: {
                    show: true
                }
            }
        },
        series: [{
            name: xName,
            type: 'pie',
            radius: '55%',
            center: ['50%', '60%'],
            data: pData,
            itemStyle: {
                emphasis: {
                    shadowBlur: 10,
                    shadowOffsetX: 0,
                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                },
                normal: {
                    label: {
                        show: true,
                        formatter: '{b} : {c} ({d}%)',
                    },
                    labelLine: {
                        show: true
                    }
                }
            }
        }],
        noDataLoadingOption: {
            text: '暂无数据',
            textStyle: {
                fontSize: '20',
            },
            effect: 'bubble',
            effectOption: {
                effect: {
                    n: 0
                }
            }
        },
    };
    return option;
}

3.Controller层代码(封装数据,此例中为静态模拟数据,实际项目中查数据库调用真是数据)

    @RequestMapping("/getUnitAllPathData")
	@ResponseBody
	public Map<String,Object> getUnitAllPathData(ModelMap modelMap, ActionValueAssistant actionValueAssistant) {
		Map<String,Object> map = new HashMap<String, Object>();
		try {
			map.put("title", "企业数据");
			map.put("xName", "企业规模");
			map.put("yName", "人数(百)");
			map.put("xArr",new String[]{"超大","大","中","小","微型"});
			map.put("yArr",new String[]{"300","2000","3000","2500","1000"});
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		
		return map;
	}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrZhouGx

觉得对你有用的话可以支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值