博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Echarts中关于自定义legend图例文字
阅读量:6831 次
发布时间:2019-06-26

本文共 1637 字,大约阅读时间需要 5 分钟。

首先看一张echarts饼图:

图片描述

这张图很好做,根本不值得提,但是用过echarts的可能会发现这个图例有点不一样,做这个图例花了我好几个小时去查,去试。结合一下echarts中legend图例的特质我们分析一下一些难点:

1.这里的图例文本包含两个变量,而formatter提供的变量模板只有name2.两个变量的样式各不相同3.对齐,换行与居中的应用

一个个看:

1.两个变量

formatter有两种形式:

  • 模板
  • 回调函数

模板

使用字符串模板,模板变量为图例名称 {name}formatter: 'Legend {name}'

这种想要修改name的值,暂时我做不到,欢迎读者指正

回调函数

使用回调函数formatter: function (name) {    return 'Legend ' + name;}

我们在返回时可以对name进行修改,从而返回我们需要的值,初步改动是这样:

var data = [    {value:40, name:'货币'},    {value:20, name:'股票'},    {value:40, name:'债券'}]formatter:  function(name){    var total = 0;    var target;    for (var i = 0, l = data.length; i < l; i++) {        total += data[i].value;        if (data[i].name == name) {            target = data[i].value;        }    }    return name + ' ' + ((target/total)*100).toFixed(2) + '%';}

2.两种样式

想自定义图例文字样式,就要用到富文本:rich,但是在官方文档中看到的只有模板形式的富文本样式配置,由1知用模板很难实现自定义name,所以只能用回调函数形式,采用富文本的形式对name进行改造:

formatter:  function(name){    var total = 0;    var target;    for (var i = 0, l = data.length; i < l; i++) {    total += data[i].value;    if (data[i].name == name) {            target = data[i].value;        }    }    var arr = [        '{a|'+((target/total)*100).toFixed(2)+'%}',        '{b|'+name+'}',    ]    return arr.join('\n')},textStyle:{    rich:{        a:{            fontSize:20,            verticalAlign:'top',            align:'center',            padding:[0,0,28,0]        },        b:{            fontSize:14,            align:'center',            padding:[0,10,0,0],            lineHeight:25        }    }}

3.对齐,换行与居中

为了图例与第一行文字对齐,需要设置两个样式的padding,把文字顶到合适的位置,然后为了上下行的间隔,设置了第2行文字的行高,最终呈现了上面图片的效果。不知道是不是有点地方做烦了,但是能最终实现自己想要的效果,很有成就感。

转载地址:http://stnkl.baihongyu.com/

你可能感兴趣的文章
我的Linux之Linux系统一日游
查看>>
laravel 分页
查看>>
如何给在用的nginx添加新模块
查看>>
自然语言处理工具HanLP被收录中国大数据产业发展的创新技术新书《数据之翼》...
查看>>
单臂路由的配置
查看>>
jQuery相关面试题
查看>>
zabbix监控软件
查看>>
Linux搭建DNS服务
查看>>
前端开发程序员薪资报告:企业到底想要什么样的前端?
查看>>
JavaScript 代码整洁之道
查看>>
棋牌管理系统用例图
查看>>
解决embed标签显示在div上层,非设置z-index
查看>>
实现 node_modules 共享
查看>>
删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个...
查看>>
返回顶部按钮
查看>>
程序员面试题100题第05题——查找最小的K个元素
查看>>
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序×××之 --- 操作权限...
查看>>
linux工作进程状态显示---------top命令
查看>>
RHEL7下 nginx 的详细配置
查看>>
Linux 任务控制的几个技巧( &, [ctrl]-z, jobs, fg, bg, k...
查看>>