echarts饼状图从后台传数据的方法

echarts饼状图从后台传数据的方法

CSDN 永远滴神!
此文章为大二萌新小白记录的学习笔记。
如有什么不足或错误
你你你 你来打我呀(狗头保命)

假数据代码
在这里插入图片描述
效果预览图
在这里插入图片描述

代码片.

 ArrayList<Map<String,String>> list = new ArrayList<>();
        for (int i = 0; i < service.size(); i++) {  //for循环从JsonArray中取出需要的数据
            JSONObject jsonObject1 = service.getJSONObject(i);
//            System.out.println(jsonObject1);  //json对象

            Integer count = jsonObject1.getInteger("count");  //服务的次数
            total=total+count;  //所有服务的总次数
            String serviceName = jsonObject1.getString("serviceName");
            String serviceUrl = jsonObject1.getString("serviceUrl");

            HashMap<String, String> map = new HashMap<>();
            map.put("name",serviceName);
            map.put("value",count.toString());
            list.add(map);
        }
        String s = JSON.toJSONString(list);
        model.addObject("viService",s);  //封装好对应格式给饼状图
        System.out.println(list);

因为是for循环读出数据,
这里通过HashMap设置了echarts对应格式 name和value ,只需要put把相应的值输入 ,然后把map添加到list集合,转换为String格式数据传到前台就行。

直接取值
在这里插入图片描述
效果如下
在这里插入图片描述

分割线----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
补充一下后面springboot项目 通过异步点击显示饼状图更简单的方法

这是实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Echarts {

    private String name;
    private String value;
}

异步调用方法

   /**
     * 对类别下面商品进行统计制作echarts柱状图
     */

    @RequestMapping("getCategoryEcharts")
    @ResponseBody
    public List<Echarts> getCategoryEcharts(){
        ArrayList<Echarts> echarts = categoryService.getCategoryEcharts();
        return echarts;
    }

饼状图盒子

<div class="layui-card">
    <div class="layui-card-body">
        <div id="columnChart" style="width: 50%; height: 500px; position: absolute"></div>
        <div id="pieChart" style="width: 50%; height: 500px; position: relative; float: right;"></div>
    </div>
</div>

异步调用方法


if (obj.event === 'getEcharts') {
                $.ajax({
                    url: 'getCategoryEcharts',
                    type: 'post',
                    dataType: 'json',
                    success: function (data) {
                        // console.log(data)
                   
                        var myChart2 = echarts.init(document.getElementById('pieChart'));

                        var option2 = {
                            tooltip: {
                                trigger: 'item'
                            },
                            legend: {
                                top: '5%',
                                left: 'center'
                            },
                            series: [
                                {
                                    name: '商品类别',
                                    type: 'pie',
                                    radius: ['40%', '70%'],
                                    avoidLabelOverlap: false,
                                    itemStyle: {
                                        borderRadius: 10,
                                        borderColor: '#fff',
                                        borderWidth: 2
                                    },
                                    label: {
                                        show: false,
                                        position: 'center'
                                    },
                                    emphasis: {
                                        label: {
                                            show: true,
                                            fontSize: '40',
                                            fontWeight: 'bold'
                                        }
                                    },
                                    labelLine: {
                                        show: false
                                    },
                                    data: data
                                       /* [
                                            {value: 1048, name: '搜索引擎'},
                                            {value: 735, name: '直接访问'},
                                            {value: 580, name: '邮件营销'},
                                            {value: 484, name: '联盟广告'},
                                            {value: 300, name: '视频广告'}
                                        ]*/
                                }
                            ]
                        };

                        myChart2.setOption(option2);
                    }
                })

            }

这样后台封装好 拿过来就可以直接用了。

  • 10
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
使用Spring Boot和Echarts创建饼状图的一种常见方法是通过后台向前端数据。 首先,您需要在后台准备数据。可以使用数据库查询或其他数据源来检索所需的数据。将数据格式化为可供Echarts饼状图使用的格式。最常见的格式是一个包含名称和值的对象数组。 接下来,在Spring Boot中创建一个控制器来处理数据请求,并将数据返回给前端。您可以使用@RequestMapping注解指定路径和请求方法。在控制器中,您可以调用相关的服务或数据访问层来检索数据,然后将数据作为响应返回给前端。 在前端,您需要使用Echarts库来创建和呈现饼状图。您可以将数据作为参数递给Echarts的series.data属性。您可以使用Ajax或其他方法来发送请求,从后台获取数据并将其递给Echarts。 这是一个简单的示例代码来说明这个过程: 后台的控制器方法: ``` @RestController public class ChartController { @Autowired private DataService dataService; @RequestMapping(value = "/data", method = RequestMethod.GET) public List<Data> getData() { // 调用服务或数据访问层来检索数据 List<Data> dataList = dataService.getData(); return dataList; } } ``` 前端的JavaScript代码: ``` $.ajax({ url: '/data', type: 'GET', dataType: 'json', success: function(data) { var chartData = []; // 将后台来的数据格式化为Echarts饼状图所需的格式 for (var i = 0; i < data.length; i++) { var item = { name: data[i].name, value: data[i].value }; chartData.push(item); } // 使用Echarts创建饼状图 var chart = echarts.init(document.getElementById('chartContainer')); var option = { series: [{ type: 'pie', data: chartData }] }; chart.setOption(option); } }); ``` 请注意,上述代码仅为示例,具体实现可能会根据您的需求有所不同。您可能需要根据自己的业务逻辑进行适当的调整和增强。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙龙龙呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值