echarts饼图动态获取数据

  饼图获取动态数据

  首先页面引入jquery.js和echarts.js

 官方文档例子的获取静态数据

option = {
    title : {
        text: '某站点用户访问来源',
        subtext: '纯属虚构',
        x:'center'
    },
    tooltip : {
        trigger: 'item',
        formatter: "{a} <br/>{b} : {c} ({d}%)"
    },
    legend: {
        orient : 'vertical',
        x : 'left',
        data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {
                show: true, 
                type: ['pie', 'funnel'],
                option: {
                    funnel: {
                        x: '25%',
                        width: '50%',
                        funnelAlign: 'left',
                        max: 1548
                    }
                }
            },
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    calculable : true,
    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:'搜索引擎'}
            ]
        }
    ]
};
                   

 然后把官方文档例子的获取静态数据,改为用ajax获取后台数据库传递数据:

  echarts.jsp:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/echarts.js"></script>
    
</head>
<body>
    <div id="echartsPie" style="width: 800px; height: 600px;"></div>  
    
    
    <script type="text/javascript">  
        var echartsPie = echarts.init(document.getElementById('echartsPie'));  
        
        // $.get('js/data.json').done(function (data) {
            $.post("user_linkByPhone.action", function(datas) {
             s//alert(datas);
             console.log(datas);
              var data= $.parseJSON(datas);    //将传递过来的json字符串转化为对象
             //alert(data);
              console.log(data);
             var servicedata=[];
             for(var i=0;i<data.name.length;i++){
                 var obj=new Object();
                 obj.name=data.name[i]; 
                 obj.value=data.data[i];
                 servicedata[i]=obj;
                 
             }
            // alert(servicedata);
           
            echartsPie.setOption({
                title : {  
                    text: '月内点击量数据',  
                    subtext: '饼图',  
                    x:'center'  
                },  
                tooltip : {  
                    trigger: 'item',  
                    formatter: "{b} <br/>{c} : {d} %"      //a 系列名称,b 数据项名称,c 数值,d 百分比
                },  
                legend: {  
                    orient : 'vertical',  
                    x : 'left',  
                    data:data.name  
                },
                toolbox: {  
                    show : true,  
                    feature : {  
                        mark : {show: true},  
                        dataView : {show: true, readOnly: false},  
                        magicType : {  
                            show: true,   
                            type: ['pie', 'funnel'],  
                            option: {  
                                funnel: {  
                                    x: '25%',  
                                    width: '50%',  
                                    funnelAlign: 'left',  
                                    max: 1548  
                                }  
                            }  
                        },  
                        restore : {show: true},  
                        saveAsImage : {show: true}  
                    }  
                },  
                calculable : true,  
                series : [  
                    {  
                        name:'点击量',  
                        type:'pie',  
                        radius : '55%',//饼图的半径大小  
                        center: ['50%', '60%'],//饼图的位置  
                        data:servicedata
                    }  
                ]    
            })
    })
    
</script>  

</body>
</html>

 

后台传递json字符串,在页面转化为json对象,控制台打印数据格式如下:

 UserAction.java:

 

/**
     * 根据手机号把该账户下的点击用户查找
     * @throws IOException 
     * 
     * */
    public String linkByPhone() throws IOException {
        HttpServletRequest req=ServletActionContext.getRequest();
        HttpServletResponse resp = ServletActionContext.getResponse();
        resp.setCharacterEncoding("UTF-8");
        String serviceNumber=req.getParameter("phoneNum");
        
        String count=user4Service.findByNumber(serviceNumber);
        String countToday=user4Service.findNUmberToday(serviceNumber);

        //String[] categories= {"今日点击量","总点击量"};
        //String[] data= {countToday,count};
        String[] name= {"一月内点击量","一周内点击量","昨天点击量","今天点击量"};
        String[] data= {"233","121","97","23"};

        Map<String, Object> map = new HashMap<>();
        //map.put("count", count);
        //map.put("countToday", countToday);
        map.put("name", name);
        map.put("data", data);
        
        Gson gson=new Gson();
        String mapJson=gson.toJson(map);
        System.out.println(mapJson);
        
        PrintWriter out = resp.getWriter();
        out.print(mapJson);
        out.flush();
        out.close();
    
        return null;
    }

 

  这里用了一个gson.jar,百度一下就能找到

  为了显示的美观些,我把数据库获取的数据换成了静态数据,效果图如下:

  

ajax动态赋值echarts(饼图和柱形图)

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在echarts饼图中后台获取数据,可以使用Ajax技术向后台发送请求,获取数据后再进行图表的渲染。具体步骤如下: 1. 在前端页面中引入echarts库和jQuery库。 2. 在页面中创建一个div元素,用于显示饼图。 3. 使用Ajax向后台发送请求,获取数据。 4. 在Ajax的回调函数中,解析后台返回的数据,并将数据转换为echarts所需的格式。 5. 使用echarts库中的API,将数据渲染成饼图,并显示在页面中。 以下是一个示例代码: ```javascript // 引入echarts库和jQuery库 <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.2/echarts.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> // 创建一个div元素,用于显示饼图 <div id="pieChart" style="width: 600px;height:400px;"></div> // 使用Ajax向后台发送请求,获取数据 $.ajax({ url: 'data.php', // 后台接口地址 type: 'get', dataType: 'json', success: function (res) { // 解析后台返回的数据,并将数据转换为echarts所需的格式 var data = []; for (var i = 0; i < res.length; i++) { data.push({ name: res[i].name, value: res[i].value }); } // 使用echarts库中的API,将数据渲染成饼图,并显示在页面中 var myChart = echarts.init(document.getElementById('pieChart')); var option = { title: { text: '饼图示例' }, series: [{ name: '访问来源', type: 'pie', radius: '55%', data: data }] }; myChart.setOption(option); } }); // 相关问题:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

失业找工作中

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值