饼图数据为0或者太小显示如下,不美观

解决办法:

为0的去掉,小于0.005的累加起来

方法

function getsData(_rowData){
var rowData=JSON.parse(JSON.stringify(_rowData))
var sum=rowData.reduce(function(o,v,i){
o+=parseFloat(v.value);
return o;
},0)
if(isNaN(sum)||sum==0){return []}
rowData.sort(function(a,b){
return a.value-b.value;
}).reverse();
var val=0;//其他的相加
for(var i=rowData.length-1;i>0;i--){
var _row=rowData[i],sub;
sub=_row.value/sum;
//如果为0或者小于.05的比例就将此元素移除
if(sub<0.005){
rowData.length=i;//去掉最后一个
val+=parseFloat(_row.value);
}
}
//在后面追加一个其他的项
if(val>0){
rowData[length].name="其他";
rowData[length].value=val;
}
return rowData;
}

效果图

完整的option

var testData=[
{value:3331, name:'直接访问'},
{value:3110, name:'邮件营销'},
{value:234, name:'联盟广告'},
{value:0, name:'联盟广告'},
{value:10, name:'联盟广告1'},
{value:10, name:'联盟广告22'},
{value:10, name:'联盟广告122'},
{value:10, name:'联盟广告333'},
{value:20, name:'联盟广告3'},
{value:10, name:'联盟广告4'},
{value:11135, name:'视频广告'},
{value:11548, name:'搜索引擎'}
],
option = {
title : {
text: '某站点用户访问来源',
subtext: '纯属虚构',
x:'center'
},
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient: 'vertical',
left: 'left',
data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
},
series : [
{
name: '访问来源',
type: 'pie',
radius : '55%',
center: ['50%', '60%'],
data:getsData(testData),
//data:testData,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
function getsData(_rowData){
var rowData=JSON.parse(JSON.stringify(_rowData))
var sum=rowData.reduce(function(o,v,i){
o+=parseFloat(v.value);
return o;
},0)
if(isNaN(sum)||sum==0){return []}
rowData.sort(function(a,b){
return a.value-b.value;
}).reverse();
var val=0;//其他的相加
for(var i=rowData.length-1;i>0;i--){
var _row=rowData[i],sub;
sub=_row.value/sum;
//如果为0或者小于.05的比例就将此元素移除
if(sub<0.005){
rowData.length=i;//去掉最后一个
val+=parseFloat(_row.value);
}
}
//在后面追加一个其他的项
if(val>0){
rowData[length].name="其他";
rowData[length].value=val;
}
return rowData;
}

echart 饼图数据为0不显示或者太小显示其他的解决办法的更多相关文章

  1. IIS7.5中调试.Net 4.0网站出现无厘头500错误的解决办法 (转)

    刚刚 部署了ii7的dll的有x86写的,就会出现以下这样的问题 iis 7 x86,Could not load file or assembly 'Name' or one of its depe ...

  2. Nested Loops join时显示no join predicate原因分析以及解决办法

    本文出处:http://www.cnblogs.com/wy123/p/6238844.html 最近遇到一个存储过程在某些特殊的情况下,效率极其低效, 至于底下到什么程度我现在都没有一个确切的数据, ...

  3. Visual Studio 2010 起始页中 不显示最近使用的项目问题,解决办法

    最近新装了vs2010,发现打开vs2010 后 起始页面中的最近使用的栏目中 并未显示最近加载的项目 解决办法如下: 运行 regedit 打开下面的键值: HKEY_CURRENT_USER/So ...

  4. Duplicate entry '0' for key 'PRIMARY'的一种可能的解决办法

    在MySQL设计好数据库往往数据库中插入数据的时候, 因为主键ID默认是不赋值的,只给其他项目赋值了,相关的SQL代码是这样的 StringBuilder strSql = new StringBui ...

  5. Oracle数据泵导入dmp文件,报UDI-12154、ORA-12154错误解决办法

    1. 数据泵导入dmp文件,报UDI-12154.ORA-12154 1.1 导入命令 impdp cwy_init/init@orcl directory=DATA_PUMP_DIR dumpfil ...

  6. [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...

    一.问题: 之前写的一款安卓4.4的应用程序,用来连接蓝牙BLE,而现在拿出来用新的AS编译(此时SDK为6.0,手机也是6.0)应用程序并不能搜索到蓝牙,查看log总是报权限错误: Need ACC ...

  7. SlidesJS 3.0.4 在手机上遇到的一些问题及解决办法

    SlidesJS 3.0.4 http://slidesjs.com 在手机上遇到的一些问题及解决办法 1.手机上打开有sliderjs的页面后, 切换到别的页面再回来时, sliderjs部分不能滑 ...

  8. 打开局域网项目,显示“项目位置不受信任”的解决办法(VS2008)

    弄了几天,网上搜了个遍,愣是解决不了,绝望的时候闭着眼睛胡搞,居然解决了,哈哈.... 开发环境:visual studio 2008 项目位置:局域网其他电脑内 出现问题: 1.弹出“”的对话框,如 ...

  9. VC++6.0在win8.1系统下运行失败的解决办法

    在win8.1系统下安装了VC++6,.0编译软件之后,发现打不开.出现下面的错误: 解决办法: 安装文件目录:Microsoft Visual Studio--common--MSDev98--Bi ...

随机推荐

  1. 新建maven web 项目后,出现的小问题

    问题一:Description Resource Path Location TypeCannot change version of project facet Dynamic Web Module ...

  2. 解码Base64,并保存图片至本地

    五一去了具有诗情画意的城市---杭州,今天是假期结束后回来上班的第一天,玩饱之后回来,确实精神抖擞了不少; 前段时间开发了有关电子签名的需求,其中有个关于解码Base64图片的知识点,值得关注一下; ...

  3. dubbo 源码编译记录

    DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,阿里内部采用sofa框架,同属于分布式RPC框架,dubbo开源,而sofa ...

  4. EBS-DBA 维护

    --查询表空间使用率: SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", ...

  5. Apache Geode with Spark

    在一些特定场景,例如streamingRDD需要和历史数据进行join从而获得一些profile信息,此时形成较小的新数据RDD和很大的历史RDD的join. Spark中直接join实际上效率不高: ...

  6. linux系统编程之信号(四):alarm和可重入函数

    一,alarm() 在将可重入函数之前我们先来了解下alarm()函数使用: #include <unistd.h> unsigned int alarm(unsigned int sec ...

  7. Alwayson--与复制的影响

    在主副本上建立复制后,复制的事务日志读取代理(log reader)不会读取尚未同步到辅助副本的日志,因为辅助副本可能在下一时刻转化成为主副本,变为新的复制发布服务器,为此需要保证复制处理的日志总慢于 ...

  8. Django:model.save()的时候在干什么

    转:https://www.cnblogs.com/zywscq/p/5397439.html Model.save(force_insert=False, force_update=False, u ...

  9. C# 控件绘制

    绘制方法: 1.在控件的paint事件中绘制 2.绘制成图片,然后作为背景图或图片贴到工作区. Bitmap bmp = new Bitmap(IWidth, this.Height); Graphi ...

  10. dorado-SplitSpanel控件

    1.这是一个界面布局控件 2.分为SideControl边区域和MainControl主区域 3.常用属性 3.1 collapsed:打开页面时,边区域是否显示 3.2 position:边区域占总 ...