echart旭日图数据转换_echarts横坐标时间轴

echart旭日图数据转换_echarts横坐标时间轴<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>echart旭日图</title><style>.m-main{margin:200px;width:150px;he…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>echart旭日图</title>
    <style>
        .m-main{margin: 200px;width: 150px;height:150px;}
    </style>
</head>

<body>
    <div id="main" class="m-main"></div>
    <script src="https://cdn.bootcss.com/echarts/4.2.0-rc.1/echarts.js"></script>
    <script type="text/javascript">
    let myChart = echarts.init(document.getElementById('main'));

    let data = [];
    let net = ['内网', '外网'];
    let level = ['高危', '中危', '低危', '信息'];
    let sum = 0;
    let itemStyle = [
        [{
                color: '#ab7550',
                itemStyle: [{
                    color: '#ab7550'
                }, {
                    color: '#825d44'
                }]
            },
            {
                color: '#614838',
                itemStyle: [{
                    color: '#523c2e'
                }, {
                    color: '#4e3d32'
                }]
            }
        ],
        [{
                color: '#3b3933',
                itemStyle: [{
                    color: '#414028'
                }, {
                    color: '#3b3933'
                }]
            },
            {
                color: '#605f42',
                itemStyle: [{
                    color: '#5f5e41'
                }, {
                    color: '#56564c'
                }]
            }
        ]
    ];    

    for (let i = 0; i < 50; i++) {
        let temp = {};
        temp.net = Math.random() > 0.3 ? 0 : 1;
        temp.level = Math.floor(Math.random() * 3.9);
        temp.msg = '信息' + i;
        temp.num = parseInt(Math.random() * 20 + 1, 10);
        sum += temp.num;
        data.push(temp);
    }

    for (let i = 0; i < data.length; i++) {
        data[i].parsent = ((data[i].num / sum) * 100).toFixed(2) + '%';
    }

    let formatData = [{
        info: {
            net: '外网',
            num: 0,
            parsent: '100%'
        },
        itemStyle: {
            color: {
                type: 'linear',
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [{
                    offset: 0,
                    color: '#292929'
                }, {
                    offset: 1,
                    color: '#e08849'
                }],
                globalCoord: false
            }
        },
        children: [{
                info: {
                    net: '外网',
                    level: '高危',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            },
            {
                info: {
                    net: '外网',
                    level: '中危',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            },
            {
                info: {
                    net: '外网',
                    level: '低危',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            },
            {
                info: {
                    net: '外网',
                    level: '信息',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            }
        ]
    }, {
        info: {
            net: '内网',
            num: 0,
            parsent: '100%'
        },
        itemStyle: {
            color: {
                type: 'linear',
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [{
                    offset: 0,
                    color: '#605F42'
                }, {
                    offset: 1,
                    color: '#292929'
                }],
                globalCoord: false
            }
        },
        children: [{
                info: {
                    net: '内网',
                    level: '高危',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            },
            {
                info: {
                    net: '内网',
                    level: '中危',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            },
            {
                info: {
                    net: '内网',
                    level: '低危',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            },
            {
                info: {
                    net: '内网',
                    level: '信息',
                    num: 0,
                    parsent: '100%'
                },
                children: []
            }
        ]
    }];
    for (let i = 0; i < data.length; i++) {
        let temp = {};
        temp = Object.assign({}, data[i]);
        temp.net = net[data[i].net];
        temp.level = level[data[i].level];
        formatData[data[i].net].children[data[i].level].children.push({
            info: temp,
            value: data[i].num,
        });
    }

    for (let i = 0; i < formatData.length; i++) {
        let isFirst = true;
        let numLevel_1 = 0;
        for (let j = 0; j < formatData[i].children.length; j++) {
            if (formatData[i].children[j].children.length > 0) {
            	let index = isFirst ? 0 : 1;
                formatData[i].children[j].itemStyle = itemStyle[i][index];

                let isFirst2 = true;
                let numLevel_2 = 0;
                for (let z = 0; z < formatData[i].children[j].children.length; z++) {
                	let index2 = isFirst2 ? 0 : 1;
                    formatData[i].children[j].children[z].itemStyle = itemStyle[i][index].itemStyle[index2];
                    let num = formatData[i].children[j].children[z].info.num;
                    numLevel_2 += num;
                    isFirst2 = !isFirst2;
                }
                formatData[i].children[j].info.num = numLevel_2;
                formatData[i].children[j].info.parsent = (numLevel_2 / sum * 100).toFixed(2) + '%';
                numLevel_1 += numLevel_2;
                isFirst = !isFirst;
            }
        }
        formatData[i].info.num = numLevel_1;
        formatData[i].info.parsent = (numLevel_1 / sum * 100).toFixed(2) + '%';
    }
    let option = {
        grid: {
            top: '0',
            left: '0',
            right: '0',
            bottom: '0',
            containLabel: false
        },
        tooltip: {
            show: true,
            formatter: function(params, ticket, callback) {
                let net = params.data.info.net;
                let level = params.data.info.level ? '·' + params.data.info.level : '';
                let msg = params.data.info.msg ? '·' +params.data.info.msg : '';

                let num = params.data.info.num;
                let parent = params.data.info.parsent;
                var text = net + level + msg;
                return `<div>${net}${level}${msg}</div>
                <div>${num} ${parent}</div>`;
            }
        },
        series: {
            radius: ['20%', '100%'],
            type: 'sunburst',
            nodeClick: false,
            itemStyle: {
                borderWidth: 1
            },
            animationDurationUpdate: 0,
            emphasis: {
                itemStyle: {
                    opacity: 0.8
                }
            },
            sort: null,
            data: formatData
        }
    };

    myChart.setOption(option);
    </script>
</body>

</html>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189197.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python计算双色球数字概率_python绘制双色球走势图

    python计算双色球数字概率_python绘制双色球走势图本次将进行下期双色球号码的预测,想想有些小激动啊。代码中使用了线性回归算法,这个场景使用这个算法,预测效果一般,各位可以考虑使用其他算法尝试结果。#!/usr/bin/python#-*-coding:UTF-8-*-#导入需要的包importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt

  • Java面试之EJB & Spring

    Java面试之EJB & SpringJava面试之EJB & Spring

  • 三种T检验的详细区分

    三种T检验的详细区分关于T检验的方法区分及使用场景介绍如下:01.概念T检验是通过比较不同数据的均值,研究两组数据之间是否存在显著差异。02.分类不同的T检验方法适用于不同的分析场景,具体的分类如下:03.t检验的前提条件无论是单样本T检验、独立样本T检验还是配对样本T检验,都有几个基本前提:(1)T检验属于参数检验,用于检验定量数据(数字有比较意义的),若…

  • servu搭建ftp服务器教程_本地ftp服务器

    servu搭建ftp服务器教程_本地ftp服务器轉自solar的博客:无心阁@solarFTP:意思就是:文件传输协议。说白了,就是提供一个服务,让网上的人,可以从你的电脑上下载资源的共享方式。一。所需“装备”1.域名2.软件:Serv-U下载地址:http://www.piaodown.com/down/soft/154.htm二。软件安装这里不想多说了,我上面提供的是绿色版,软件安装后,会自动运行

  • postman 中post方式提交数据

    postman 中post方式提交数据

  • 线程与进程,你真得理解了吗

    线程与进程,你真得理解了吗相信大家面试时一定没少被一个问题刁难,那就是进程和线程的区别是什么?这个问题延申开来并不像表面那么简单,今天就来深入一探。开始前先看一组非常传神的图例,相信可以帮助你更好理解进程与线程的概念:1进程与线程的关系和区别什么是进程进程可以说是一个“执行中的程序”。程序是指令、数据及其组织形式的描述,是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。进程有哪些特征?进程依赖于程序运行而存在,进程是动态的,程序是静态的;进程是操作系统进行

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号