Echarts饼图-当每个模块的单位不同时的配置方法

689 阅读2分钟

在日常需求中,echarts饼图一般都带有单位,如官网所示图例: 此时的单位为%,配置方法很简单,如下series的label配置所示:

series: [
         {
            name: '半径模式',
            type: 'pie',
            radius: [20, 110],
            center: ['25%', '50%'],
            roseType: 'radius',
            label: {
                show: true,
                 formatter:'{b} : {c} ({d}%)'
            },
            data:[
                {value: 10, name: 'rose1'},
                {value: 5, name: 'rose2'},
                {value: 15, name: 'rose3'},
                {value: 25, name: 'rose4'},
                {value: 20, name: 'rose5'},
                {value: 35, name: 'rose6'},
                {value: 30, name: 'rose7'},
                {value: 40, name: 'rose8'}
            ]
         }
    ]

1, 字符串模板

模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。 在 trigger 为 'axis' 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。 不同图表类型下的 {a},{b},{c},{d} 含义不一样。 其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:

折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)

散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)

地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)

饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)

更多其它图表模板变量的含义可以见相应的Echarts官网图表的 label.formatter 配置项。

但是有时根据我们的项目需求,单位不同时应该怎么配置呢?如下图所示,我们需要的单位有MB和KB,此时上述统一配置方法就不能生效了。 这时我们需采用单独配置方法,将每项数据的单位分别写在data数组中,如下series的label配置所示:

series: [
         {
            name: '半径模式',
            type: 'pie',
            radius: [20, 110],
            center: ['25%', '50%'],
            roseType: 'radius',
            label: {
                formatter: function(a) {
                    let name = a.data.name;
                    let value = a.data.value;
                    let unit = a.data.unit;
                    return name + ' : '+value + unit
                }
            },
            emphasis: {
                label: {
                    show: true
                }
            },
            data: [
                {value: 10, name: 'rose1',unit: 'KB'},
                {value: 5, name: 'rose2', unit: 'MB'},
                {value: 15, name: 'rose3', unit: 'MB'},
                {value: 25, name: 'rose4', unit: 'MB'},
                {value: 20, name: 'rose5',unit: 'KB'},
                {value: 35, name: 'rose6',unit: 'KB'},
                {value: 30, name: 'rose7',unit: 'KB'},
                {value: 40, name: 'rose8',unit: 'KB'}
            ]
        }
    ]