效果图:

代码:

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. 快速替换jar包class文件的方法

    stetp1:jar -tvf *.jar | grep *.class 查找jar包中,class文件所在的具体路径stetp2:jar -xvf *.jar */*/*/*.class 当前目录下 ...

  2. Java中保留两位小数之format

    String.format仅限double类型可用 int类型会报错 double d1 = 6.6666;System.out.println(String.format("%.2f&qu ...

  3. python 爬虫 selenium 与 chromedriver

    selenium  安装 pip install   selenium chromedriver  下载 https://npm.taobao.org/mirrors/chromedriver?spm ...

  4. nginx 可视化配置平台

    nginx是一个高性能的HTTP和反向代理服务器.在部署项目中,经常会用到,但是配置是比较麻烦的,很容易出错,今天大叔给大家推荐一个非常好用的可视化平台 -- nginx-gui. 项目功能 配置管理 ...

  5. 2023-03-01 Error: Invalid hook call.Hooks can only be called inside of the body of a function component.

    问题描述:rn项目使用钩子useState,详细报错如下: Error: Invalid hook call. Hooks can only be called inside of the body ...

  6. vba_pj_0001_auto_date

    Const init_info As String = "InitInfo"Const end_row_op As Integer = 100  'tmpConst end_row ...

  7. 掌控安全学院SQL注入靶场宽字节注入

    在php中,magic_quotes_gpc这个函数为on时,就开启了转义功能,另外addslashes和mysql_real_escape_string也可以实现转义功能.可转移的的内容包括:单双引 ...

  8. reduce()

    from functools import reducea=[10,11,22,33]b=reduce(lambda x,y:x+y,a)<===>sum(a)print(b)

  9. 记录POI导入时单元格下拉框两种实现方式(excel数据有效性)

    如果下拉选项字符少于225 使用方式1 public static HSSFSheet setHSSFValidation(HSSFSheet sheet, String[] textlist, in ...

  10. SDM

    SDM:sigma delta Modulator SC:switch capacitor(开关电容) sigma delta调制器的分类 •单环路和级联(cascade)SDM:在于使用的量化器的数 ...