echarts饼状图怎么设置数据为0的不显示

clipboard.png
我想要数据为0的未处理不要显示出来,网上找了好久,只找到这个跟问题相关的链接
http://bbs.csdn.net/topics/39...
里面说的做法是这样的

clipboard.png
但是出错,我觉得怎么可以加个括号立即执行

clipboard.png
但是我把括号去掉,程序是没出错,但是数据为0的还是显示出来

网上的东西真心觉得太泛滥了,同一个说法答案,没有经过验证就被广泛传播,点开几个不同的链接都是相同的内容。

官方文档只写了个bool值,没有说怎么写函数,我觉得应该是这样的不加括号,但是没效果,还是显示出未处理0

clipboard.png

求解!!!

阅读 30.9k
6 个回答

你引用value 报错是正常的 因为并没有定义value 你要把你的内个匿名函数加一个参数 params 并console.log(params)一下 看一下有没有value(params.value) 可以尝试一下

新手上路,请多包涵

data:[{value: data1 === 0 ? null : data1},{value: data2 === 0 ? null : data2}], 其中data1和data2都是饼图填充数据,把值为0的数据设置成null就可以了 亲测有效~ 但是饼图如果有多维数据每一个都要判断的话还是单独写个函数

itemStyle:{

                           normal:{ 
                            label:{ 
                                 show: function(value){                                         
                                      if(value == 0.00) return false;                                          
                                }(), 
                                formatter: '{b} : {c} ({d}%)' 
                              }, 
                              labelLine :{
                                   show:function(value){
                                     if(value == 0.00) return false;                                         
                                }()
                              } 
                        } 
                    } 

把formatter: '{b} : {c} ({d}%)' 改为 formatter: '{b} :{d}%' 原因是0就存储在{c}里面了

最好的办法是每次在渲染饼状图之前先去除0项
series.data = series.data.filter(function(a){

return a.value > 0;

});


还有一个最简方法
图片描述

设置此项为false

var val1 = 100;
var val2 = 100;
var val3 = 100;
....................
data: [
    {
        value: val1,
        name: '<50',
        label: {
            show: function () {
                if (val1 == 0) {
                    return false;
                } else {
                    return true;
                }
            }(),
            formatter: '{d}%',
            position: 'inside'
        },
        labelLine: {
            show: false
        },
        itemStyle: {
            color: '#00FFFF'
        }
    },
    {
        value: val2,
        name: '>=50  <100',
        label: {
            show: function () {
                if (val2 == 0) {
                    return false;
                } else {
                    return true;
                }
            }(),
            formatter: '{d}%',
            position: 'inside'
        },
        labelLine: {
            show: false
        },
        itemStyle: {
            color: '#0000FF'
        }
    },
    {
        value: val3,
        name: '>=100',
        label: {
            show: function () {
                if (val3 == 0) {
                    return false;
                } else {
                    return true;
                }
            }(),
            formatter: '{d}%',
            position: 'inside'
        },
        labelLine: {
            show: false
        },
        itemStyle: {
            color: '#9900FF'
        }
    }
]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏