echart的series中label formatter回调函数使用及样式。

个人博客地址:http://xurui.club/2018/08/03/echart/

今天朋友写论文用到Echart做图,但是个性化的需要不知怎么做,找我帮忙。我很久没看前端的东西了,不过Echart那玩意好像很有意思,所以就接了下来。

先看需求。

1 将紫色框部分改成自己的内容
2 将红色框内容去掉
3 将蓝色框内容改成自己定义的类别,(三种)

于是看了下代码:

app.title = '嵌套环形图';

option = {
    tooltip: {
        trigger: 'item',
        formatter: "{a} <br/>{b}: {c} ({d}%)"
    },
    legend: {
        orient: 'vertical',
        x: 'left',
        data:['直达','营销广告','搜索引擎','邮件营销','联盟广告','视频广告','百度','谷歌','必应','其他']
    },
    series: [
        {
            name:'访问来源',
            type:'pie',
            selectedMode: 'single',
            radius: [0, '30%'],

            label: {
                normal: {
                    position: 'inner'
                }
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            data:[
                {value:335, name:'直达', selected:true},
                {value:679, name:'营销广告'},
                {value:1548, name:'搜索引擎'}
            ]
        },
        {
            name:'访问来源',
            type:'pie',
            radius: ['40%', '55%'],
            label: {
                normal: {
                    formatter: '{a|{a}}{abg|}\n{hr|}\n  {b|{b}:}{c}  {per|{d}%}  ',
                    backgroundColor: '#eee',
                    borderColor: '#aaa',
                    borderWidth: 1,
                    borderRadius: 4,
                    // shadowBlur:3,
                    // shadowOffsetX: 2,
                    // shadowOffsetY: 2,
                    // shadowColor: '#999',
                    // padding: [0, 7],
                    rich: {
                        a: {
                            color: '#999',
                            lineHeight: 22,
                            align: 'center'
                        },
                        // abg: {
                        //     backgroundColor: '#333',
                        //     width: '100%',
                        //     align: 'right',
                        //     height: 22,
                        //     borderRadius: [4, 4, 0, 0]
                        // },
                        hr: {
                            borderColor: '#aaa',
                            width: '100%',
                            borderWidth: 0.5,
                            height: 0
                        },
                        b: {
                            fontSize: 16,
                            lineHeight: 33
                        },
                        per: {
                            color: '#eee',
                            backgroundColor: '#334455',
                            padding: [2, 4],
                            borderRadius: 2
                        }
                    }
                }
            },
            data:[
                {value:335, name:'直达'},
                {value:310, name:'邮件营销'},
                {value:234, name:'联盟广告'},
                {value:135, name:'视频广告'},
                {value:1048, name:'百度'},
                {value:251, name:'谷歌'},
                {value:147, name:'必应'},
                {value:102, name:'其他'}
            ]
        }
    ]
};

经过注释调试,发现需求1只要改最后一个data集合就好,把name和value换成自己自定义的内容。
而需求2 3 主要在formatter: '{a|{a}}{abg|}\n{hr|}\n {b|{b}:}{c} {per|{d}%} '这里。把、{c}去掉即可。

最难搞的是需求3,用了2小时搞明白的。
这里是官方文档里的介绍
http://echarts.baidu.com/option.html#grid.tooltip.formatter
formatter有两种写法:一种字符串模板,另一种是回调函数。
字符串模型里写的是,我们要改的地方是该series中name的值,这里name只能有一个值,改name是不能了,所以我们可以像改需求1那样,在data中传一个变量。用回调函数,文档中对回调函数也没有写明白。这里用简单的语言再梳理一下。主要有两点:将需要的个性化信息显示出来,然后展现出好看的样式。
第一点:
我们的个性化需求在data里写

data:[
    {value:335, name:'直达',flag:'type_1'},
    {value:310, name:'邮件营销',flag:'type_1'},
    {value:234, name:'联盟广告',flag:'type_1'},
    {value:135, name:'视频广告',flag:'type_2'},
    {value:1048, name:'百度',flag:'type_2'},
    {value:251, name:'谷歌',flag:'type_2'},
    {value:147, name:'必应',flag:'type_3'},
    {value:102, name:'其他',flag:'type_3'}
]

也就是把我们需求3的内容type_1,type_2,type_3写在变量flag中,然后通过回调函数取出来,这里谁回调的先不管。
回调函数的写法:

 formatter:function(params){ 
    str =  params.data.flag+ params.name+params.percent
    return str
},

这里params就是我们的data,一条一条往里传。
看效果:
可以看到,内容改过了,就是丑了点。我们想改成原来的样子怎么办呢?这里正是官方文档中最让我头疼的,找了半天没找到,在网上也不找到解释的比较好的。
我们套用原有样式,只需要把我们的参数params.name这种替换到原来{a}这种的位置,我们的参数和其他内容用+连接。如下:

 formatter:function(params){ 
    str = '{a|'+ params.data.flag + '}{abg|}\n{hr|}\n  {b|'+params.name+':} {per|'+params.percent + '%}'
    return str
},
// {a| 这种表示a样式,而{a}这种有固定的含义,{a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比),样式里有条竖杠!记得区分。

最终效果:

  • 34
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
智慧农业是一种结合了现代信息技术,包括物联网、大数据、云计算等,对农业生产过程进行智能化管理和监控的新模式。它通过各种传感器和设备采集农业生产的关键数据,如大气、土壤和水质参数,以及生物生长状态等,实现远程诊断和精准调控。智慧农业的核心价值在于提高农业生产效率,保障食品安全,实现资源的可持续利用,并为农业产业的转型升级提供支持。 智慧农业的实现依赖于多个子系统,包括但不限于设施蔬菜精细化种植管理系统、农业技术资料库、数据采集系统、防伪防串货系统、食品安全与质量追溯系统、应急追溯系统、灾情疫情防控系统、农业工作管理系统、远程诊断系统、监控心、环境监测系统、智能环境控制系统等。这些系统共同构成了一个综合的信息管理和服务平台,使得农业生产者能够基于数据做出更加科学的决策。 数据采集是智慧农业的基础。通过手工录入、传感器自动采集、移动端录入、条码/RFID扫描录入、拍照录入以及GPS和遥感技术等多种方式,智慧农业系统能够全面收集农业生产过程的各种数据。这些数据不仅包括环境参数,还涵盖了生长状态、加工保存、检验检疫等环节,为农业生产提供了全面的数据支持。 智慧农业的应用前景广阔,它不仅能够提升农业生产的管理水平,还能够通过各种应用系统,如库房管理、无公害监控、物资管理、成本控制等,为农业生产者提供全面的服务。此外,智慧农业还能够支持政府监管,通过发病报告、投入品报告、死亡报告等,加强农业产品的安全管理和质量控制。 面对智慧农业的建设和发展,存在一些挑战,如投资成本高、生产过程标准化难度大、数据采集和监测的技术难题等。为了克服这些挑战,需要政府、企业和相关机构的共同努力,通过政策支持、技术创新和教育培训等手段,推动智慧农业的健康发展。智慧农业的建设需要明确建设目的,选择合适的系统模块,并制定合理的设备布署方案,以实现农业生产的智能化、精准化和高效化。
echartsformatter回调函数是用来修改鼠标悬浮事件信息的显示内容的。通过回调函数,我们可以自定义数据的展示形式。在使用formatter参数时,我们可以为其传入一个回调函数,该回调函数可以接收一个参数params,其params包含了当前鼠标悬浮的数据信息。我们可以通过params来获取需要展示的数据,并返回修改后的展示内容。 在给formatter参数传入回调函数时,我们可以使用JsCode来定义这个函数。在函数体内,我们可以根据params的数据信息来判断需要展示的内容,并返回修改后的展示结果。比如,如果我们只想要显示数据值,可以通过判断params.data.value是否存在来决定返回什么内容。 以下是一个示例代码片段,展示了如何使用回调函数来修改formatter参数的内容: ```python label_opts=opts.LabelOpts( position="top", is_show=True, formatter=JsCode( """ function(params) { if ('value' in params.data) { return params.data.value,即数据值。 通过使用回调函数,我们可以根据自己的需求来自定义formatter参数的显示内容,实现更加个性化的展示效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [echarts 使用formatter 修改鼠标悬浮事件信息操作](https://download.csdn.net/download/weixin_38649657/12924977)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [pyecharts如何使用formatter回调函数](https://blog.csdn.net/weixin_43982422/article/details/109315338)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值