echarts legend的遍历,从右到左

本文介绍如何使用ECharts自定义饼图的legend显示方式,实现从右向左展示的功能,并通过具体代码示例展示了如何计算并显示数据的百分比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录


前言

正常的legend的展示是从左到右的,鉴于需求的要求,需要从右往左展示。图片显示的数量,但是下面的代码中显示的百分比。
在这里插入图片描述

代码


function arrCount(arr) {
            let count = 0
            arr.forEach(item => {
              count = count + item.value
            })
            return count
          }

let typeChartMoney = self.$echarts.init(document.getElementById('typeChartMoney'));
            typeChartMoney.setOption({
              title: {
                show: false
              },
              legend: function () {
                let serie = [];
                // 这是每列五个来计算的,大于5才需要分列
                if (collectHTLXMoney.length > 5) {
                  collectHTLXMoney.map((item, index) => {
                    let dataList;
                    let flag = false;
                    let r = 20 * parseInt(index / 5)
                    if ((index + 1) % 5 == 0) {
                      flag = true;
                      dataList = collectHTLXMoney.slice((index - 5 + 1), (index + 1))

                    } else if ((index + 1) == collectHTLXMoney.length) {
                      flag = true;
                      dataList = collectHTLXMoney.slice(parseInt(collectHTLXMoney.length / 5) * 5)

                    }
                    let obj = {
                      orient: 'vertical',
                      right: r + '%',
                      align: 'left',
                      icon: 'circle',
                      itemGap: 10,
                      itemHeight: 12,
                      textStyle: {
                        color: '#76B7E9',
                        fontSize: 16,
                        lineHeight: 20,

                      },
                      formatter(name) {
                      // 显示名字和百分比
                      
// let total = arrCount(collectDeptNum)
                // const val = collectDeptNum.filter(item => {
                //   return item.name === name
                // })
                // return name + '\n' + ((val[0].value / total).toFixed(1)) * 100 + '%'
                        const val = collectHTLXMoney.filter(item => {
                          return item.name === name
                        })
                        return name + '\n' + val[0].value
                      },
                      data: dataList
                    }

                    if (flag) {
                      serie.push(obj);
                    } 

                  });
                }
                return serie;
              }(),
              tooltip: {
                trigger: 'item',
                formatter: '{b} <br/>{c} ({d}%)'
              },
              color: self.colors,
              series: {
                type: 'pie',
                right: '45%',
                label: {
                  formatter: '{b}\n{d}%',
                  fontSize: 18,
                },
                data: collectHTLXMoney
              }
            });
要在echarts中实现legend左右排列,可以使用坐标系grid的属性控制legend的位置和布局。具体步骤如下: 1. 首先,在echarts的option配置中,设置grid的属性show和containLabel为true,这样可以保证grid占满整个图表区域,并且不会被坐标轴的标签和图例遮挡。 2. 然后,设置legend的属性orient为'horizontal',表示图例水平排布。 3. 接下来,设置legend的属性top和bottom为0,表示图例位于图表区域的上方和下方,这样就能实现左右排列的效果。 4. 如果图例过长而导致排列不整齐,可以使用legend的属性width设置图例的宽度,同时设置legend的属性itemGap为10或其他适当的值,用于控制图例项之间的间距。 综上所述,通过设置grid的属性和legend的属性,可以实现echarts legend的左右排列。可以参考中的示例进行具体操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在echarts中图例legend和坐标系grid实现左右布局实例](https://download.csdn.net/download/weixin_38725119/12852045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [echartslegend实现排列对齐](https://blog.csdn.net/liruiqing520/article/details/123256914)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [echarts legend 排列问题](https://download.csdn.net/download/qq_36437172/12420436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值