数据可视化-ECharts Html项目实战(9)

news2024/11/27 2:48:05

在之前的文章中,我们学习了如何在ECharts中编写气泡图,词云图。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

数据可视化-ECharts Html项目实战(8)-CSDN博客文章浏览阅读1.4k次,点赞45次,收藏33次。今天的文章,会正式进入ECharts气泡图与词云图的学习。希望我的文章能帮助到正在学习的你,也欢迎各位来本篇文章下一起交流学习,共同进步。https://blog.csdn.net/qq_49513817/article/details/137091165?spm=1001.2014.3001.5501今天的文章,会带着大家深入学习ECharts特殊图表中的雷达图,实现特殊效果的插入运用,函数的插入,以及多图表雷达图,希望你能在本篇文章中有所收获,如果你绘制的雷达图不好看,那么今天的文章一定会有所收获。

目录

一、知识回顾

二、雷达图

三、添加视觉映射组件的雷达图

四、多图表雷达图

拓展-视觉组件用法

一、知识回顾

在之前的文章中,我们学习了气泡图词云图,而它们的设置各有难点,例如气泡图的大量数据随机需要用到的函数设置,词云图的引入wordCloud模块

我们会使用到这样一组函数来进行我们的随机数生成,当然你可以根据这个基础写出任何你需要的函数,这并不是唯一的。

 

且虽然是写气泡图,这里的类型依旧设置成之前的scatter也就是散点图。

 这里的作用就是引入我们写词云图的一个模块,且类型(type)要设置成wordCloud。

前面的知识复习完了,我们开启今天的学习吧

二、雷达图

首先,我们先要知道雷达图主要用于展示多个变量或指标之间的相对关系和比较,这样在自己写图表的过程中就能根据需求选择我们的所用的图表。

其次,雷达图和饼图,圆环图等大部分圆形图一样,基本不用考虑x轴y轴的配置,也无需在工具箱中添加过多的转换图表类型的按钮,因为它用不上。雷达图的数据通常是一个包含多个对象的数组,每个对象代表一个数据系列,而饼图的数据结构通常是一个数组,数组的每个元素是一个对象。

最后,在雷达图的配置中,我们需要定义radar属性来设置雷达图的形状、大小等,并设置series中的type'radar'

现在,开始雷达图的编写吧:

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="echarts.min.js"></script>
</head>
<body>
   <div id="main" style="width: 750px;height: 550px;"></div>
   <script type="text/javascript">
    var myChart = echarts.init(document.getElementById('main'));
    var option={
        title:{
            text:'销售能力对比分析',
            textStyle:{
                color:'red'
            },
            left:15,
            top:0
        },
		tooltip: { // 配置详情提示框组件
				confine: true, // 设置是否将tooltip框限制在图表的区域内
				enterable: true, // 设置鼠标是否可以移动到tooltip区域内
                formatter: "{a} <br/>{b} : {c} "
			},

            legend:{
            type:"scroll",
            data:['王斌','刘倩','袁波'],
            left:570,
            top:"bottom", 
        },
        radar: {  
            center:['50%','56%'],
            radius:225,
            
        // 雷达图指示器  
        indicator: [  
            { name: '销售', max: 100 },  
            { name: '沟通', max: 100 },  
            { name: '服务', max: 100 },  
            { name: '协作', max: 100 },  
            { name: '培训', max: 100 },  
        ],  
        name: {  
            textStyle: {  
                color: '#fff',  
                backgroundColor: '#999',  
                borderRadius: 3,  
                padding: [3, 5]  
            }  
        }  
    },  
    series: [  
        {  
            itemStyle: { // 设置折线拐点标志的样式
					emphasis: {
						lineStyle: {
							width: 5
						},
					} 
				},
            name: '代表数据',  
            type: 'radar',  
            data : [  
                {  
                    value : [87.50, 87.50, 90.00, 91.25, 85.00],  
                    name : '王斌'  
                },  
                {  
                    value :  [90.00, 88.75, 85.00, 87.50, 88.75], 
                    name : '刘倩'  
                },  
                {  
                    value : [92.50, 91.25, 88.75, 92.50, 91.25],  
                    name : '袁波'  
                },  
 
            ]  
        }  
    ]  
};  
    myChart.setOption(option);
   </script> 
</body>
</html>

 在代码中radius,是设置我们雷达图的大小

itemStyle配置项,它在雷达图中,可以用于调整数据点的颜色、大小等属性。它里面包括的

emphasis: {
    lineStyle: {
                width: 5
					},
				} 

就是我们的移动线条处,触发高亮效果。

数据类型也和之前不同,现在我们需要的是一个包含多个对象的数组。

现在,看看我们代码的运行效果吧

三、添加视觉映射组件的雷达图

添加视觉组件,我们需要用到visualMap配置项(visualMap 是 ECharts(一个使用 JavaScript 实现的开源可视化库)中的一个重要组件,主要用于进行数据的视觉映射。简单来说,它将数据映射到视觉元素上,通过改变这些视觉元素的表现(如颜色、大小、透明度等),使得数据的分布、大小、趋势等特征能够更直观地展现给用户。)

现在,我们写一个新的图表,并把visualMap运用在我们的代码中,将它变得更直观,好看:

       
       <!DOCTYPE html>
       <head>
           <meta charset="utf-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <title>Document</title>
           <script src="echarts.min.js"></script>
       </head>
       <body>
          <div id="main" style="width: 600px;height: 400px;"></div>
          <script type="text/javascript">
           var myChart = echarts.init(document.getElementById('main'));
           option = {
            backgroundColor:'rgba(204,204,204,0.7)',
            title: {
            text: '浏览器占比',
            subtext: 'Big Data',
            top: 20,
            left: 30                                               
            },
            tooltip: {
            trigger: 'item'
            },
            legend: {
            type: 'scroll',
            bottom: 10,
            data: (function () {
                var list = [];
                for (var i = 1; i <= 28; i++) {
                list.push(i + 2000 + '');
                }
                return list;
            })()
            },
            visualMap: {
            top: 'middle',
            right: 10,
            color: ['red', 'yellow'],
            calculable: true
            },
            radar: {
            indicator: [
                { text: 'IE8-', max: 400 },
                { text: 'IE9+', max: 400 },
                { text: 'Safari', max: 400 },
                { text: 'Firefox', max: 400 },
                { text: 'Chrome', max: 400 }
            ]
            },
            series: (function () {
            var series = [];
            for (var i = 1; i <= 28; i++) {
                series.push({
                type: 'radar',
                symbol: 'none',
                lineStyle: {
                    width: 1
                },
                emphasis: {
                    areaStyle: {
                    color: 'rgba(0,250,0,0.3)'
                    }
                },
                data: [
                    {
                    value: [
                        (40 - i) * 10,
                        (38 - i) * 4 + 60,
                        i * 5 + 10,
                        i * 9,
                        (i * i) / 2 ,
                    ],
                    name: i + 2000 + ''
                    }
                ]
                });
            }
            return series;
            })()
        };
        myChart.setOption(option);
   </script> 
</body>
</html>

在这个表中 ,我添加了

            legend: {
            type: 'scroll',
            bottom: 10,
            data: (function () {
                var list = [];
                for (var i = 1; i <= 28; i++) {
                list.push(i + 2000 + '');
                }
                return list;
            })()
            },

它 的作用是动态生成图例数据,最终它会输出我们2001到2028的图例数据,当我们有大量且连续的数字图例时(例如年月日),就可以使用这种方法添加图例。

以及

 visualMap: { <!-- 定义视觉映射组件 -->  
             top: 'middle', <!-- 设置视觉映射组件距离容器顶部的距离为中间位置 -->  
             right: 10, <!-- 设置视觉映射组件距离容器右侧的距离为 10 像素 -->  
             color: ['red', 'yellow'], <!-- 设置视觉映射的颜色范围为从红色到黄色 -->  
             calculable: true <!-- 允许用户手动调整颜色映射的范围 -->  
           }, 

让我们的数据更加好看。

现在,运行代码,看看效果:

 

可以很明显看到我们的映射效果,如果将visualMap配置项删掉,那么得到的图表就会像下面这样,让人一眼看去毫无波澜。

 最后,如果能将视觉组件在合适的时候添加到自己的图表中,那么对图表带来的的美观提升是巨大的。

四、多图表雷达图

在一个盒子中放多个图表,我们并不陌生,只需要设置好我们每个图表的大小,位置即可。

现在,编写代码:

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="echarts.min.js"></script>
</head>
<body>
   <div id="main" style="width: 750px;height: 550px;"></div>
   <script type="text/javascript">
    var myChart = echarts.init(document.getElementById('main'));
    var option={
        title:{
            text:'多雷达图',
            textStyle:{
                color:'red'
            },
            left:15,
            top:0
        },
		tooltip: { // 配置详情提示框组件
				confine: true, // 设置是否将tooltip框限制在图表的区域内
				enterable: true, // 设置鼠标是否可以移动到tooltip区域内
                formatter: "{a} <br/>{b} : {c} "
			},

            legend:{
            type:"scroll",
            data:['王斌','刘倩','袁波','降水量','蒸发量'],
            left:400,
            top:"bottom", 
        },
        radar: [
            {  
        nameGap: 3,shape:'polygon',       
        // 雷达图指示器  
        indicator: [  
            { name: '销售', max: 100 },  
            { name: '沟通', max: 100 },  
            { name: '服务', max: 100 },  
            { name: '协作', max: 100 },  
            { name: '培训', max: 100 },  
        ],  
        name: {  
            textStyle: {  
                color: '#fff',  
                backgroundColor: '#999',  
                borderRadius: 3,  
                padding: [3, 5]  
            },  
        },  
        center:['40%','30%'],radius:135,
    }, 
    {  
        name:'图2',
        nameGap: 3,shape:'polygon',       
        // 雷达图指示器  
        indicator: (function(){
            var res = [];
            for (var i = 1;i  <= 12;i++){res.push({text:i+'月',max:100});}
            return res;
        })(),
        name: {  
            textStyle: {  
                color: '#fff',  
                backgroundColor: '#999',  
                borderRadius: 3,  
                padding: [3, 5]  
            },  
        } ,  
        center:['40%','78%'],radius:100,
    }, 
], 
    series: [  
        {  
            name:'图1',
            itemStyle: { // 设置折线拐点标志的样式
					emphasis: {
						lineStyle: {
							width: 5
						},
					} 
				},

            type: 'radar',  
            data : [  
                {  
                    value : [87.50, 87.50, 90.00, 91.25, 85.00],  
                    name : '王斌'  
                },  
                {  
                    value :  [90.00, 88.75, 85.00, 87.50, 88.75], 
                    name : '刘倩'  
                },  
                {  
                    value : [92.50, 91.25, 88.75, 92.50, 91.25],  
                    name : '袁波'  
                },  
            ]  
        },
        {
            radarIndex: 1, 
            type:'radar',
            tooltip:{trigger:'item'},
            itemStyle:{normal:{areaStyle:{type:'default'}}},
            data:[
                {name:'降水量',value:[5,6,9,56,69,73,77,88,50,22,7,5]},
                {name:'蒸发量',value:[3,5,8,34,45,77,68,65,36,23,7,4]},
            ]
        }  
    ]  
};  
    myChart.setOption(option);
   </script> 
</body>
</html>

多图表只需考虑我们的center位置radius大小,不要两表重叠 ,且图表配置项与数据单独编写最后使用radarIndex将图表数据对应即可。

radarIndex通常用在series的data数组中,每个数据项可以有一个radarIndex属性来指定它属于哪个雷达图。例如,在一个包含两个雷达图的图表中,你可以使用radarIndex:0来指定一个数据项属于第一个雷达图,radarIndex:1来指定它属于第二个雷达图。

现在看看图表效果

两个表上下排列在一起,没有出现重叠等冲突

今天的学习完成,快去练习吧~ 

拓展-视觉组件用法

配置项类型说明
typeString视觉映射类型,可选值为 'continuous'(连续型)和 'piecewise'(分段型)。连续型表示数据呈连续分布,可以使用渐变的颜色来表示不同数值之间的差异;分段型则将数据分成若干个区间,每个区间使用不同的颜色表示。
minNumber数据范围的最小值。对于连续型visualMap,该值定义了颜色映射的起始点。
maxNumber数据范围的最大值。对于连续型visualMap,该值定义了颜色映射的结束点。
inRangeObject在范围内的视觉映射配置。对于连续型visualMap,可以定义颜色渐变,如 { color: ['blue', 'red'] } 表示从蓝色渐变到红色。
textString/Array视觉映射的标签。可以定义文本标签,也可以定义多个标签用于分段型visualMap。
inverseBoolean是否反转颜色的渐变方向。默认为false,即颜色从最小值到最大值正常渐变;设置为true时,颜色会从最大值到最小值渐变。
rangeArray对于连续型visualMap,可以定义自定义的数据范围,如 [0, 100]
calculableBoolean是否显示拖拽条,允许用户手动调整数据范围。
orientStringvisualMap组件的布局朝向,可选值为'horizontal'(水平)和'vertical'(垂直)。
left/right/top/bottom/width/heightNumber/String这些属性用于设置visualMap组件在图表中的位置和大小。例如,left: 'center' 将组件水平居中。
splitNumberNumber对于分段型visualMap,该值定义了区间的数量。
itemWidth/itemHeightNumber对于分段型visualMap,定义了每个区间的宽度或高度。
itemStyleObject用于定义区间的样式,如颜色、边框等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1560981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git仓库太大只下载单个文件或文件夹

有没有这样的苦恼&#xff1a;仓库太大&#xff0c;只想下载其中某些文件(夹)&#xff1f; 一招解决&#xff1a;bash down_folder_from_git.sh 运行前&#xff0c;先修改开头三个变量 原理: 稀疏检出 让工作树仅包含自定义的文件 #!/usr/bin/bash addrhttps://github.com/fac…

千行百业加速鸿蒙化,5分钟搞懂鸿蒙开发有必要学吗?

鸿蒙系统在全球范围内取得了显著进展&#xff0c;其生态设备数量已经突破8亿大关。更令人振奋的是&#xff0c;已有超过200家领先的互联网应用公司纷纷加速鸿蒙原生开发的步伐。 这其中包括了我们日常生活中耳熟能详的淘宝、支付宝、美团、京东、高德、小红书等热门应用&#…

AI技术创业:挖掘行业解决方案、智能产品服务及教育培训的无限机遇

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

AI大模型和BI如何结合?

人工智能大模型和商业智能&#xff08;Business Intelligence&#xff0c;BI&#xff09;可以结合起来&#xff0c;可以涵盖以下几个方面&#xff1a; 数据分析和预测&#xff1a;人工智能大模型可以通过深度学习和大数据处理技术&#xff0c;对大规模的数据进行分析和预测。通…

org.junit.runners.model.InvalidTestClassError:1. No runnable methods

你们好&#xff0c;我是金金金。 场景 很简单的一个测试方法 我的boot版本&#xff1a;2.7.18 依赖 报错信息 排查 看报错信息提示无效的测试类&#xff0c;没有可运行的方法 看了下依赖信息&#xff0c;引入spring-boot-starter-test依赖也自动的引入了juni5依赖&#xff0…

latex表格前后都有多行合并

最终实现的效果图如下&#xff1a; 这个表格的特点是前面有5行合并&#xff0c;后边也有5行合并&#xff0c;眉头有2行合并。 当然要引入对应的包 \usepackage{multirow} 其实现代码如下&#xff1a; \begin{table*}[!t]\caption{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. \label{X…

论文笔记✍GS3D- An Efficient 3D Object Detection Framework for Autonomous Driving

论文笔记✍GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving &#x1f4dc; Abstract &#x1f528; 主流做法限制 &#xff1a; 我们在自动驾驶场景中提出了一种基于单个 RGB 图像的高效 3D 物体检测框架。我们的工作重点是提取 2D 图像中的底层 3…

八、组合数据类型(列表、元组、集合、字典)

序列&#xff1a;存储多个值的连续空间&#xff0c;每个值对应一个编号————索引 包括&#xff1a;列表、元组、集合和字典 相加操作 s1"桂林山水" s2山水甲天下 print(s1s2)#直接相加得到新的字符串 print(_____________________________) print((s1s2)*5,sep&…

Linux 查看磁盘信息:df与du命令详解

一、df 1.简介 df 是 disk free的缩写&#xff0c;从UNIX和类UNIX操作系统的早期开始&#xff0c;它就是UNIX和类UNIX操作系统的一部分。它被设计为一种工具&#xff0c;用于监视系统上已使用和可用的磁盘空间数量。 df 命令主要用于需要检查文件系统上已使用和可用的磁盘空…

Ubuntu安装Bazel(最简单的方法)

Ubuntu安装Bazel 文章目录 Ubuntu安装Bazel简介安装验证一下 简介 Bazel 是一款由 Google 开发的开源构建和测试工具&#xff0c;它使用了一种人类可读且高度可配置的语言来描述构建规则&#xff0c;使得构建和测试过程更加灵活和可维护。Bazel 支持多种编程语言&#xff0c;包…

ArcGIS Pro怎么进行挖填方计算

在工程实施之前&#xff0c;我们需要充分利用地形&#xff0c;结合实际因素&#xff0c;通过挖填方计算项目的标高&#xff0c;以达到合理控制成本的目的&#xff0c;这里为大家介绍一下ArcGIS Pro中挖填方计算的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的…

【Web自动化】Selenium的使用(一)

目录 关于自动化测试selenium工作机制 selenium的使用selenium中常用API定位元素按id定位按名称定位按类名定位按标签名定位按CSS选择器定位按XPath定位示例 操作测试对象等待sleep休眠隐式等待显示等待 打印信息浏览器操作键盘事件鼠标事件切换窗口截图关闭浏览器 欢迎阅读本文…

Windows部署VisualSVN服务端结合Cpolar实现公网访问内网管理界面

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

Oracle利用BBED恢复崩溃实例(ORA-01092,ORA-00704,ORA-01578)

BBED修复数据损坏引起的数据库崩溃&#xff08;ORA-01092,ORA-00704,ORA-01578&#xff09;(2021年某苏州国企的案例&#xff09; 1.Symptom 用户一个边缘系统出现数据文件损坏&#xff0c;且没有备份&#xff0c;数据库无法启动 报错如下&#xff0c;发现是oracle bootstra…

安卓Termux系统安装MariaDB结合内网穿透实现公网连接本地数据库

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

【python】pip清华大学镜像

1、修改pip源为清华源&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2、结果是自动给我创建了一个文件&#xff1a; 3、打开这个文件所在的文件夹&#xff1a; 4、打开文件&#xff1a; 5、如果不想指定清华的&#xff0c;就删掉…

TransmittableThreadLocal 问题杂记

0、前言 TransmittableThreadLocal&#xff0c;简称 TTL&#xff0c;是阿里巴巴开源的一个Java库&#xff0c;它能够实现ThreadLocal在多线程间的值传递&#xff0c;适用于使用线程池、异步调用等需要线程切换的场景&#xff0c;解决了ThreadLocal在使用父子线程、线程池时不能…

【SpringBoot从入门到精通】01_SpringBoot概述

一、Spring与SpringBoot 1.1 Spring Spring 是一款目前主流的 Java EE 轻量级开源框架&#xff0c;是 Java 世界最为成功的框架之一。Spring 由“Spring 之父”Rod Johnson(罗宾约翰逊) 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。 广义…

基于ssm的平面设计课程在线学习平台系统(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的平面设计课程在线学习平台系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 前台功能&#xf…

MySql 常用的聚合函数总结

MySQL 中的聚合函数用于对一组数据进行计算&#xff0c;并返回单个值作为结果。以下是常用的 MySQL 聚合函数的总结及其功能描述&#xff1a; 1. COUNT() 功能&#xff1a;用于计算指定列或表中的行数。 语法&#xff1a; COUNT(*) COUNT(expression) 示例&#xff1a; SELECT …