ECharts中: legend图例中的格式化属性(formatter)以及嵌套图表

这篇具有很好参考价值的文章主要介绍了ECharts中: legend图例中的格式化属性(formatter)以及嵌套图表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

legend中的formatter: 用来格式化图例文本,支持字符串模板和回调函数两种形式.

Documentation - Apache ECharts

图例formatter,前端开发,javascript,echarts,javascript,前端,vue.js,Powered by 金山文档

字符串模板的相识变量使用(不同的图表对应都有对应的变量):

Documentation - Apache ECharts

具体详细使用可以点^^^链接查看:

图例formatter,前端开发,javascript,echarts,javascript,前端,vue.js,Powered by 金山文档

以下是我司的项目实例:

图例formatter,前端开发,javascript,echarts,javascript,前端,vue.js,Powered by 金山文档
//核心代码

legend: {
    formatter: function (name) {
        // 想要实现什么样的效果,可以根据你们的需求来进行处理返回
       if (name.indexOf('星') > -1) {//判断是否是星级占比
             let p = (tarValue / total * 100).toFixed(2);//计算百分比
            return name + '\r\r' + p + '%';//返回文本
        } else {
            let p = (tarValue / total * 100).toFixed(2);//计算百分比
            return name + '\r\r\r' + tarValue + '个\r\r|\r\r' + p + '%';//返回文本
        }
    }
}

想要实现两个图表的嵌套效果,如上图所示:

你只需要创建一个 <div id="xjzbChart"></div>

然后 获取 xjzbChart = echarts.init(document.getElementById('xjzbChart'));

在 series数组里面创建两个图表对象,通过center 属性调整位置就OK了.文章来源地址https://www.toymoban.com/news/detail-635539.html

<div id="xjzbChart"></div>

onMounted(()=>{
    xjzbChart = echarts.init(document.getElementById('xjzbChart'));    
    drawXjzbChart();    
    window.addEventListener('resize', () => {
        xjzbChart.resize();
    })
})

function drawXjzbChart() {
        let option = {
            tooltip: {
                trigger: 'item'
            },
            legend: {
                icon: 'circle',
                itemHeight: 10,
                itemWidth: 10,
                bottom: 20,
                itemGap: 20,
                left: 'center',
                textStyle: {
                    color:'#ffffff',
                    fontSize: 14
                },
                formatter: function (name) {
                    // 获取星级占比数据
                    let data1 = option.series[0].data;
                    // 获取机构分布数据
                    let data2 = option.series[1].data;
                    let total = 0;
                    let tarValue = 0;
                    let allData = data1.concat(data2);// 合并data1和data2
                    for (let i = 0; i < allData.length; i++) {
                        /* series中的 星级占比: data的value总和 与 机构分布: data的value总和  一样所以我们只需要
                        取前前五个(星级占比的value值进行相加计算总和来计算 星级占比和机构分布的百分比) */
                        if (i < 5) {
                            total += allData[i].value;
                        }
                        // 把 allData中的每个name 与 formatter中的name进行比对,并赋上对应的值
                        if (allData[i].name == name) {
                            tarValue = allData[i].value;
                        }
                    }
                    if (name.indexOf('星') > -1) { // 对 formatter中的name进行检索,符合的进行操作
                        // 例: (548/2860*100)保留两位小数 ==> tarValue=548  total=2860
                        let p = (tarValue / total * 100).toFixed(2);
                        return name + '\r\r' + p + '%';
                    } else {
                        // 检索出不带星字的就是机构的数据,然后进行操作
                        let p = (tarValue / total * 100).toFixed(2);
                        return name + '\r\r\r' + tarValue + '个\r\r|\r\r' + p + '%';
                    }
                }
            },
            series: [
                {
                    name: '星级占比',
                    type: 'pie',
                    selectedMode: 'single',
                    center: ['50%', '35%'],
                    radius: [0, '20%'],
                    label: {
                        fontSize: 12,
                        color: '#ffffff',
                        formatter: '{b}\n{d}%'
                    },
                    labelLine: {
                        show: true,
                        length: 5
                    },
                    data: [
                        { value: 548, name: '一星' },
                        { value: 775, name: '二星' },
                        { value: 679, name: '三星'},
                        { value: 479, name: '四星'},
                        { value: 379, name: '五星'}
                    ]
                },
                {
                    name: '机构分布',
                    type: 'pie',
                    center: ['50%', '35%'],
                    radius: ['50%', '65%'],
                    labelLine: {
                        length: 20
                    },
                    label: {
                        color: '#ffffff',
                        fontSize: 14,
                        formatter: '{b}\n{c}'
                    },
                    data: [
                        { value: 348, name: '建安区' },
                        { value: 435, name: '魏都区' },
                        { value: 710, name: '长葛市' },
                        { value: 551, name: '禹州市' },
                        { value: 634, name: '襄城县' },
                        { value: 182, name: '鄢陵县' }
                    ]
                }
            ]
        }
        xjzbChart.setOption(option);
    }
图例formatter,前端开发,javascript,echarts,javascript,前端,vue.js,Powered by 金山文档
图例formatter,前端开发,javascript,echarts,javascript,前端,vue.js,Powered by 金山文档

到了这里,关于ECharts中: legend图例中的格式化属性(formatter)以及嵌套图表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • echarts——legend图例颜色设置,legend数组形式展示——基础积累

    最近在写看板的时候,遇到一个小细节,就是当折线图展示图表时,线的颜色不够明显,导致视觉上不突出。 问题效果图如下: 修改后的效果图: 还是拿前几天文章中的 renderBar 渲染图表的函数来处理. 如果要保证图例颜色各不相同,可以给legend设置成数组的形式。主要代码

    2024年02月12日
    浏览(26)
  • echarts的legend——图例样式的配置

    🙂博主:小猫娃来啦 🙂文章核心: echarts的legend——图例样式的配置 文章目录 认识图例 从echarts官网开始了解 Legend的作用 配置Legend 图例类型 事件与交互 使用示例和Demo 真实项目中legend的配置 重点  关于legend的所有配置项列表 以下是真实项目中的图表展示以及echarts官网的

    2023年04月15日
    浏览(35)
  • Echarts:legend 图例形状,图例文字颜色与图例一致及图例文字多种颜色的配置

    本文详细讲解了如何使用ECharts进行图例配置,包括图例形状的选择(如circle, rect等)、图例文字颜色与图例形状一致性的设置,以及如何实现图例文字多种颜色的配置。

    2024年02月06日
    浏览(39)
  • java中的数字的格式化(超详细)

    数字的格式化在解决实际问题时使用非常普遍,如显示某超市的商品价格,需要保留两位小数。Java 主要对浮点型数据进行数字格式化操作,其中浮点型数据包括 double 和 float 型数据,在 java 中常用以下方法: 目录        // 方法一 :DecimalFormat转换最简便 #.00 表示两位小数

    2024年02月16日
    浏览(28)
  • Excel将单元格中的json本文格式化

    打开Excel文件并按下ALT + F11打开Visual Basic for Applications(VBA)编辑器。 输入下面的代码 进入https://github.com/VBA-tools/VBA-JSON,下载release的最新代码 VBA编辑器,“文件”-“导入”, 导入文件 JsonConverter.bas 点击VBA编辑器的菜单栏上的\\\"工具\\\"。 选择\\\"引用\\\",然后在弹出的对话框中找到

    2024年02月14日
    浏览(33)
  • Pandas中的字符串和时间转换与格式化

    Pandas 提供了若干个函数来格式化时间。 其中,最常用的是 to_datetime() 函数。 可以使用 to_datetime() 函数将一个字符串解析为时间,并指定字符串的格式。例如: 输出: 还可以使用 strftime() 函数将时间格式化为字符串。例如: 输出: 如果想要格式化某一列中的时间,可以使用

    2024年02月04日
    浏览(28)
  • 插值字符串格式化代码中的感叹号(Python)

    在csdn上读到,插值字符串格式化代码中有“!”,进行了一番探究,了解到其中的一点“隐秘”,在此共享。🤪 (笔记模板由python脚本于2024年03月31日 09:27:59创建,本篇笔记适合 对Python字符串格式化有一定认知 的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网 :https://www

    2024年04月13日
    浏览(27)
  • 格式化DataFrame中的时间数据DataFrame.to_datetime()方法

    小白从小学Python、C、Java】 【计算机等级考试+500强双证书】 【Python-数据分析】 格式化DataFrame中的时间数据 DataFrame.to_datetime()方法   选择题 关于以下python代码说法错误的一项是? import pandas as pd data = {\\\"Date\\\": [\\\'2022/12/01\\\',\\\'2022/12/02\\\']} df = pd.DataFrame(data) print(\\\"【查看】df:\\\") print(df

    2024年02月14日
    浏览(25)
  • Go 中的格式化字符串`fmt.Sprintf()` 和 `fmt.Printf()`

    在 Go 中,可以使用 fmt.Sprintf() 和 fmt.Printf() 函数来格式化字符串,这两个函数类似于 C 语言中的 scanf 和 printf 函数。 fmt.Sprintf() 函数返回一个格式化后的字符串,而不是将其打印到标准输出流中。下面是一个例子: 输出: 在这个例子中,使用了 %s 和 %d 格式化动词来格式化字

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包