效果图:

代码:

function(chartOption){

chartOption = $nps$.deepCopyTo({}, chartOption);

var chartDataList_region = this.__portal.componentItemMap.root.chartDataList_region || [];
var chartDataList_manufacturer = this.__portal.componentItemMap.root.chartDataList_manufacturer || [];
var chartDataList_cpName = this.__portal.componentItemMap.root.chartDataList_cpName || [];

chartOption.series = [];

// 标题
chartOption.title.text = "{icon|} 各维度劣化TOP3";
chartOption.title.textStyle.rich = {
icon: {
backgroundColor: '#3c8cd0',
width: 2,
height: 15
}
};

var seriesData_region = this.getSeriesData(chartDataList_region, 'region');
var seriesData_manufacturer = this.getSeriesData(chartDataList_manufacturer, 'manufacturer');
var seriesData_cpName = this.getSeriesData(chartDataList_cpName, 'cpName');

// // 转换中文牌照方 厂商
var seriesData_manufacturer_zh = [],seriesData_cpName_zh = [];
seriesData_manufacturer.forEach(function(item) {
item.name = $nps$.appData.manufacturerMap[item.name] || item.name || '未知';
seriesData_manufacturer_zh.push(item);
})
seriesData_cpName.forEach(function(item) {
item.name = $nps$.appData.cpNameMap[item.name] || item.name || '未知';
seriesData_cpName_zh.push(item);
})

chartOption.legend = {show: false};
chartOption.tooltip = {
show: true,
formatter: function(option){
return option.seriesName + '<br/>' + option.data.name + ': ' + option.value + '('+option.percent+'%)';
}
};
chartOption.series.push({
name: '区域劣化告警数',
type: 'pie',
animation: false,
radius : '65%',
center: ['15%', "46%"],
data: seriesData_region,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
});
chartOption.series.push({
name: '厂家劣化告警数',
type: 'pie',
animation: false,
radius : '65%',
center: ['45%', "46%"],
label: {
normal: {
show: true
}
},
data: seriesData_manufacturer_zh,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
});
chartOption.series.push({
name: '牌照方劣化告警数',
type: 'pie',
animation: false,
radius : '65%',
center: ['75%', "46%"],
label: {
normal: {
show: true
}
},
data: seriesData_cpName_zh,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
});


console.log('告警用户劣化TOP3', chartOption);
return chartOption;
}

方法:

getSeriesData:

function(chartDataList, key){

var colors = ['#9bd049', '#1d9af9', '#663db7', '#f9c928', '#d05221', '#21d0b4'];

var dataMap = {};
chartDataList.map(function(item){
dataMap[item._time] = dataMap[item._time] || {list: [], map: {}};
dataMap[item._time].list.push(item);
dataMap[item._time].map[item[key]] = item;
});
var timeKeys = Object.keys(dataMap);
timeKeys.sort(); // 根据时间排序

// 最近一个时间点数据
var dataItem1 = dataMap[timeKeys[timeKeys.length-1]] || {list: [], map: {}};
// 前一个时间点数据
var dataItem2 = dataMap[timeKeys[timeKeys.length-2]] || dataItem1;
var increaseData = dataItem1.list.map(function(item){
var item2 = dataItem2.map[item[key]];
// 忽略 key 为空的值
if (item[key] && item2) {
return {key: item[key], increase: (item.alarmUsers-item2.alarmUsers) || 0};
} else {
return {key: item[key], increase: -1};
}
});
increaseData.sort(function(item1, item2){return Number(item2.increase)-Number(item1.increase);})
var seriesData = [];
let limitCount = $nps$._appData.data.params && $nps$._appData.data.params.overview_history ? $nps$._appData.data.params.overview_history.limitAlertCount : 3;
for (var i = 0; i < increaseData.length && seriesData.length< limitCount; i ++) {
var dataItem = increaseData[i];
if (dataItem.key) {
seriesData.push({
value: dataItem.increase,
name: dataItem.key,
itemStyle: {normal: {color: colors[i]}}
});
}
}

return seriesData;
}

echart一个框里放三个饼图案例的更多相关文章

  1. k8s集群启动了上万个容器(一个pod里放上百个容器,起百个pod就模拟出上万个容器)服务器超时,无法操作的解决办法

    问题说明: 一个POD里放了百个容器,然后让K8S集群部署上百个POD,得到可运行上万个容器的实验目的. 实验环境:3台DELL裸机服务器,16核+64G,硬盘容量忽略吧,上T了,肯定够. 1.一开始 ...

  2. 一个宽度不确定的DIV里放三个水平对齐的DIV,左右两个DIV宽度固定为100px,中间那个DIV自适应宽度

    方法一:浮动  注意三个div的位置 <html><head> <meta charset="utf-8"> <style type=&q ...

  3. 为什么一个目录里放超过十个Mp4文件会导致资源管理器和播放程序变卡变慢?

    最近<鬼吹灯之精绝古城>大火,我也下载了剧集放在移动硬盘里. 起初还没事,当剧集超过十个时发现资源管理器变慢了,表现为上方的绿条总是在闪动前进,给文件改名都缓慢无比. 当剧集超过十五个时, ...

  4. DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度

    一个入门的DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度. 说明:代码非真实情况下使用,所以直接简单. 没耐 ...

  5. 组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)

    组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...

  6. Java web开发,在一个jsp里放太多java代码的后果,摘自 java web轻量级开发面试教程

    现要做一个简单的登录页面,如果用户通过验证,会显示Welcome用户名的欢迎词,反之则返回登录页面让用户再次输入 这部分的完整代码是JSPDemo项目里的login.jsp,下面来分析一下关键代码. ...

  7. CSS 文本框里添加按钮的实现

    有很多人做界面会经常发现设计师设计出这样的界面: 咋一看是一个文本框里加了一个按钮,经过谷歌之后,未发现在文本框里可以添加按钮. 但可以通过div来实现它. 我的做法是先做一个大小的div,然后用带里 ...

  8. 字符集之在UTF-8中,一个汉字为什么需要三个字节?

    (一)在UTF-8中,一个汉字为什么需要三个字节? UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序.有关Unicode为什么会出现就不叙述了,Unico ...

  9. express + mongodb 搭建一个简易网站 (三)

    express + mongodb 搭建一个简易网站 (三) 前面已经实现了基本的网站功能,现在我们就开始开搞一个完整的网站,现在整个网站的UI就是下面的这个样子. 我们网站的样子就照着这个来吧. 1 ...

  10. python 利用爬虫获取页面上下拉框里的所有国家

    前段时间,领导说列一下某页面上的所有国家信息,话说这个国家下拉框里的国家有两三百个,是第三方模块导入的,手动从页面拷贝,不切实际,于是想着用爬虫去获取这个国家信息,并保存到文件里. 下面是具体的代码, ...

随机推荐

  1. 《CSOL大灾变》Mobile开发进度记录——扔掉与拾取武器的逻辑

    在武器系统的开发过程中,涉及到武器的丢弃逻辑.由于场景是复制场景,而自己写碰撞测试和抛物线以及重力下落来模拟扔掉一把武器,并且要防止武器扔到墙里.如果自己实现这些逻辑,那么会占用渲染线程的时间开销,即 ...

  2. ubuntu18.04 安装 opencv(版本4.5.5) cmake(版本3.25)

    参考链接:安装cmake     https://blog.csdn.net/Man_1man/article/details/126467371   安装 opencv  https://blog. ...

  3. AC和瘦AP组网

    ac和瘦ap组网 参考了这篇文章[Cisco Packet Tracer]WLC配置瘦AP指南_时间进行的小宇的博客-CSDN博客_思科瘦ap配置命令 服务器server-pt配置 先设置IP地址,随 ...

  4. MacBook + 移动SSD实现三系统(Mac OS、windows、ubuntu)

    Windows系统安装 1.我们先要在windows的电脑上下载好,你需要的windows镜像文件(下载地址:https://msdn.itellyou.cn/,个人建议用迅雷下载),下载好winto ...

  5. HANDLE和HMOUDLE、HWND讲解

    HWND是线程相关的,通常指明窗口句柄,通过句柄找到窗口所属进程和线程 Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄.系统对内核对象以链表的形式进行管理,载入到内存中的每一个内核 ...

  6. js 俄罗斯方块 canvas

    俄罗斯方块背景- canvans 第一次写不知道说些什么好,直接上代码了@_@... jquery引入 <script src="https://cdn.bootcdn.net/aja ...

  7. 08.JSP技术

    一.什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据.JSP文件的扩展名是.jsp. JSP = htm ...

  8. aws note

    Amazon EC2 Instance Types https://aws.amazon.com/ec2/instance-types/ My courses - AWS Skill Builder ...

  9. 7.mysql索引失效

          失效的七字口诀: 模型数空运最快 模:模糊查询以%开始索引失效: 型:数据类型转换 函数:函数的索引 空:索引列为空不走索引, 运:对索引列进行加减乘除会失效 最:不按聚合索引的最左匹配会 ...

  10. js array map

      var user = ['Alice', 'Emily', 'Kate'];       console.log(user);      var keys = user.keys(); for ( ...