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

在之前的文章中,我们学习了如何在ECharts中特殊图表的双y图以及自定义形状词云图。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

数据可视化-ECharts Html项目实战(10)-CSDN博客文章浏览阅读775次,点赞20次,收藏16次。今天的文章,会带着大家深入学习ECharts特殊图表中的双y图以及自定义形状词云图。希望我的文章能帮助到正在学习的你,也欢迎各位来本篇文章下一起交流学习,共同进步。https://blog.csdn.net/qq_49513817/article/details/137527485今天的文章,会带着大家深入学习ECharts特殊图表中的矩形树图以及Echarts中高级功能的多图表联动。希望你能在本篇文章中有所收获。 

目录

一、知识回顾

二、矩形树图

三、多图表联动


一、知识回顾

在之前的文章中我们学习了ECharts特殊图表中的双y图以及自定义形状词云图。

双y图的配置并不复杂,只需要记住图片中这几点就行

 在配置的时,只需要将两条y轴配置项分开写,数据对应好就行,如图:

自定义形状词云图就有点复杂了

我们需要将我们所需形状的图片转化为base64格式

 只会就能编写我们的代码进行操作

现在,开始今天的学习吧 

二、矩形树图

在ECharts中编写矩形树图(Tree Graph)的配置项时,有几个关键的注意事项需要我们牢记:

  • 数据结构准备:首先,我们需要确保提供的数据结构是适合树图展示的。树图通常需要一个层级结构的数据,其中每个节点都包含其子节点的信息。我们需要确保数据格式正确,并且遵循ECharts所期望的格式。
  • 配置选项:树图的配置项非常丰富,我们需要根据具体需求进行配置。例如,我们可以设置series下的type'tree'来指定绘制树图,然后利用data字段来传入你的树形数据。同时,我们还可以配置节点的样式(如symbolSize)、标签的显示方式(如label字段下的positionfontSize等)、提示框的触发方式(如tooltip字段)等。
  • 布局与方向:树图有多种布局方式,比如水平布局和垂直布局。我们可以通过配置orient字段来指定布局方向,比如'TB'表示从上到下垂直布局,'LR'表示从左到右水平布局。

现在,分析我们的代码:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <script src="js/echarts.js"></script>
</head>

<body>
    <div id="main" style="width: 800px; height: 400px"></div>
    <script type="text/javascript">
        var myChart = echarts.init(document.getElementById("main"));
        function getLevelOption(){
            return[{
                itemStyle:{
                    borderWidth:0,
                    gapWidth:5
                }
            },
            {
                itemStyle:{
                    gapWidth:1
                }
            },
            {
                colorSaturation:[0.7,0.2],
                itemStyle:{
                    gapWidth:1,
                    borderColorSaturation:0.5
                }
            }
            ];
        }
        var option = {
            title: {
                text: '矩形树图',
                left:"270",
                top:15,
                textStyle:{
                    color:'green'
                }
            },
            series: [{
                name:'全部',
                type:'treemap',
                levels:getLevelOption(),
                data:[{
                    name:'陈大姐',
                    value:52,
                    children:[{
                        name:'神小龙',
                        value:17
                    },{
                        name:'赣小许',
                        value:13
                    },{
                        name:'常小君',
                        value:15
                    },{
                        name:'娄小青',
                        value:7
                    }]
                },{
                    name:'吴二姐',
                    value:39,
                    children:[{
                        name:'林慕慕',
                        value:22
                    },{
                        name:'杨株洲',
                        value:17
                    }]
                },{
                    name:'林三妹',
                    value:38,
                    children:[{
                        name:'魏芷兰',
                        value:19
                    },{
                        name:'高常德',
                        value:11
                    },{
                        name:'桂尧尧',
                        value:8
                    }]
                    },]
                }]
        
                };
        myChart.setOption(option);
    </script>
</body>

</html>

在我们的代码中,我创建了一个getLevelOption()函数。返回函数中数组里的每个元素代表一个层级的样式配置。每个层级配置对象包含itemStyle属性,用于设置节点的样式,比如边框宽度(borderWidth)和间隙宽度(gapWidth)。第三个层级配置还包含了颜色饱和度(colorSaturation)和边框颜色饱和度(borderColorSaturation)的设置,这些用于控制节点颜色的深浅 。

再将类型设置为"treemap",最后填写数据

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

 

 可以看到我们预期的矩形树图效果出现了

三、多图表联动

这里我使用童年游戏洛克王国一个宠物的数值以及登场率作为数据可视化例子为大家讲解。 

我使用了ECharts库来创建两个图表:一个饼图和一个雷达图。

  • 初始化图表
    • echarts.init():用于初始化图表实例,传入一个DOM元素作为图表的容器。
  • 饼图(myChart1)
    • 标题 (title):设置了图表的标题为“巴哈姆特天梯赛登场占比”。
    • 提示框 (tooltip):定义了当鼠标悬停在数据项上时显示的提示框内容。
    • 图例 (legend):展示了饼图的图例,包括“巴哈姆特”、“其他年费”、“精灵王”、“奉神”和“活动宠”。
    • 系列 (series):定义了饼图的数据系列,包括数据类型(pie)、半径、数据项(包括值和名称)以及高亮状态下的样式。
  • 雷达图(myChart2)
    • 颜色 (color):为雷达图的各个系列设置了颜色数组。
    • 背景色 (backgroundColor):设置了图表的背景色,这里使用了带有透明度的灰色。
    • 标题 (title):设置了雷达图的标题为“巴哈姆特数值”。
    • 提示框 (tooltip):tooltip
    • 雷达指示器 (radar.indicator):定义了雷达图的各个指示器(如“精力”、“攻击”等)及其最大值。
    • 系列 (series):定义了雷达图的数据系列,包括数据类型(radar)。

那么我们如何把他们放到一起呢?

  • 设置图表选项
    • myChart1.setOption(option1); 和 myChart2.setOption(option2);:这两行代码将之前定义的配置选项应用到各自的图表实例上。这会导致图表根据配置选项进行渲染和展示。
  • 添加自定义属性 group
    • myChart1.group = 'group1'; 和 myChart2.group = 'group1';:这里,我为两个图表实例添加了一个自定义属性 group,并将它们的值都设置为 'group1'。这本身并不会影响ECharts图表的渲染或行为,但它是一个自定义属性,用于后面的图表联动操作。
  • 连接图表
    • echarts.connect('group1');:这行代码是ECharts中实现多图表联动的关键。echarts.connect 方法用于将多个图表实例连接到一个组中,以实现它们之间的联动。当图表被连接到一个组后,用户在一个图表上的交互(如点击、鼠标悬停等)会触发该组中所有其他图表的相应事件。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/echarts.js"></script>
    <style>   
        #main1, #main2 {  
            position: relative;  
        }  
        #main1::before, #main2::before {  
            content: "";  
            position: absolute;  
            top: 0;  
            left: 0;  
            width: 100%;  
            height:100%;  
            background-image: url('image/3.png'); /* 图片路径 */  
            background-size: cover; /* 根据容器大小调整图片大小 */  
            opacity: 0.3; /* 设置图片透明度为30% */  
            z-index: -1; /* 确保背景图在图表之下 */  
        }  
    </style>  
</head>
<body>
    <div id="main1" style="width: 600px; height: 500px"></div>
    <div id="main2" style="width: 600px; height: 500px"></div>
    <script type="text/javascript">
    var myChart1 = echarts.init(document.getElementById("main1"));
            var option1 = {  
            title: {  
                text: '巴哈姆特天梯赛登场占比'  
            },  
            tooltip: { 
                trigger: 'item',  
                formatter: '{a} <br/>{b}: {c} ({d}%)' // 格式化提示框内容  
            },  
            legend: { // 添加图例组件  
                orient: 'vertical',  
                left: 'left',  
                data: ['巴哈姆特', '其他年费', '精灵王', '奉神', '活动宠'], // 根据你的数据设置图例名称
                top:'30',
            },  
            series: [{  
                name:'巴哈姆特登场占比',
                type: 'pie', // 改为饼图类型  
                radius: '50%', // 饼图的半径,可以是百分比或者具体的像素值  
                data: [  
                    {value: 68, name: '巴哈姆特'},  
                    {value: 115, name: '其他年费'},  
                    {value: 92.0, name: '精灵王'},  
                    {value: 90, name: '奉神'},  
                    {value: 38, name: '活动宠'}  
                ],  
                labelLine: {  
                    show: true  
                },  
                emphasis: { // 高亮状态下的样式  
                    label: {  
                        show: true,  
                        fontSize: '30',  
                        fontWeight: 'bold'  
                    }  
                }  
            }]  
        };

    var myChart2 = echarts.init(document.getElementById("main2"));
    var option2 = {   
        color: ['blue',' LimeGreen', 'Darkgreen', 'red', 'Purple'],
        backgroundColor: 'rgba(128,128,128,0.1)',  
        title: { text: '巴哈姆特数值', },
        tooltip: { toolip: { show: true }, },
        radar: {
            indicator: [
            { name: '精力', max: 200,color:'blue'},
            { name: '攻击', max: 200,color:'LimeGreen'},
            { name: '防御', max: 200,color:'Darkgreen' },
            { name: '魔攻', max: 200,color:'red' },
            { name: '魔防', max: 200,color:'Purple' },
            { name: '速度', max: 200,color:'yellow'},
            ]
        series: [{     
            type: 'radar',   
            data: [{
                value: [166,155,141,100,141,139],
                name:'巴哈姆特数值',
                
        }],
        }]
    };
    myChart1.setOption(option1);   
    myChart2.setOption(option2);   
    myChart1.group = 'group1';
    myChart2.group = 'group1';
    echarts.connect('group1');
</script>
</body>
</html>

现在,运行代码看看效果

可以看到我们预期的多表联动效果呈现了,快去试试吧~ 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【随笔】Git 高级篇 -- 纠缠不清的分支 rebase | cherry-pick(二十四)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

基于特征的多模态生物信号信息检索与自相似矩阵:专注于自动分割

论文地址&#xff1a;Biosensors | Free Full-Text | Feature-Based Information Retrieval of Multimodal Biosignals with a Self-Similarity Matrix: Focus on Automatic Segmentation (mdpi.com) 论文源码&#xff1a;无 期刊&#xff1a;biosensors 这篇论文提出了一种基…

全国项目管理标准化技术委员会副秘书长肖杨先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 全国项目管理标准化技术委员会副秘书长、微薄之力&#xff08;北京&#xff09;管理咨询有限公司董事长肖杨先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“数字化时代下&#xff0c;由职能型组织向高度适应性组织转…

GCB Meta分析 | 土壤水分-大气反馈主导全球陆地N2O硝化的排放和反硝化的减少

原名&#xff1a;Soil moisture–atmosphere feedback dominates land N2O nitrification emissions and denitrification reduction 译名&#xff1a;土壤水分-大气反馈主导着陆地N2O硝化的排放和反硝化的减少 期刊&#xff1a;Global Change Biology 通讯作者&#xff1a…

OSCP靶场--Dibble

OSCP靶场–Dibble 考点(前端鉴权参数修改node.js代码注入 suid cp提权 ) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.173.110 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-09 06:36 EDT Nmap scan repor…

Golang | Leetcode Golang题解之第21题合并两个有序链表

题目&#xff1a; 题解&#xff1a; func mergeTwoLists(list1, list2 *ListNode) *ListNode {if list1 nil {return list2 // 注&#xff1a;如果都为空则返回空}if list2 nil {return list1}if list1.Val < list2.Val {list1.Next mergeTwoLists(list1.Next, list2)re…

一分钟了解机器人自由度

目录 自由度的定义 自由度的分类 自由度的影响 影响自由度的主要参数 关节类型和数量 机械结构 控制系统 自由度控制的硬件架构原理 传感器 执行器 控制器 通信接口 软件和算法 机器人的自由度是指机器人在空间中可以独立移动的方向和角度的数量&#xff0c;它是衡…

比特币减半后 牛市爆发

作者&#xff1a;Arthur Hayes of Co-Founder of 100x 编译&#xff1a;Qin jin of ccvalue (以下内容仅代表作者个人观点&#xff0c;不应作为投资决策依据&#xff0c;也不应被视为参与投资交易的建议或意见&#xff09;。 Ping PingPing&#xff0c;我的手机发出的声音&…

【Java】Java使用Swing实现一个模拟计算器(有源码)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 今天翻了翻之前写的代码&#xff0c;发现自己之前还写了一个计算器&#xff0c;今天把我之前写的代码分享出来。 我记得那会儿刚学不会写&#xff0c;写的乱七八糟&#xff0c;但拿来当期末作业还是不错的哈哈。 直接上…

坚持十天做完Python入门编程100题第三天加班

坚持十天做完Python入门编程100题第三天加班 第24题 扫描文件列表第25题 如何将字典转换成JSON并写入json文件&#xff1f;第26题 JSON转换成字典 第24题 扫描文件列表 如何扫描当前目录下的文件列表&#xff1f;解析&#xff1a;可以使用python内置的glob模块&#xff0c;用法…

MySQL高级(索引分类-聚集索引-二级索引)

目录 1、主键索引、唯一索引、常规索引、全文索引 2、 聚集索引、二级索引 3、回表查询 4、通过id查询和通过name查询那个执行效率高&#xff1f; 5、 InnoDB主键索引的 B tree 高度为多高呢&#xff1f; 1、主键索引、唯一索引、常规索引、全文索引 在MySQL数据库&#xff0c…

三维GIS平台标绘功能新玩法,不仅可以绘制点线面,还可以生成单体化

地图标绘是指在地图背景上标绘各种具有空间特征的事、物的分布状态或行动部署。标绘功能能够表达各种信息&#xff0c;描述各种对象&#xff0c;表示各种资源&#xff0c;可用于规划设计、电力、通信和应急等行业。 标绘技术是三维GIS的一个重要技术手段&#xff0c;在几何表达…

HelpLook 比 BookStack 胜在哪里

不可置否&#xff0c;现如今信息管理和知识分享平台已经成为我们工作和学习中必不可少的工具。在众多平台中&#xff0c;HelpLook和BookStack都是备受欢迎的选择。然而&#xff0c;当我们将两者放在一起比较时&#xff0c;会发现HelpLook在多个方面相较于BookStack有着显著的优…

Django之rest_framework(二)

格式后缀 为了使我们的响应不再硬连接到单个内容类型这一事实,我们可以将API格式后缀添加到API之后。使用格式后缀为我们提供了明确引用给定格式的URL,譬如:http://example.com/api/items/4.json 官网:2 - Requests and responses - Django REST framework views:在函数…

STC89C52学习笔记(八)

STC89C52学习笔记&#xff08;八&#xff09; 综述&#xff1a;本文讲述了LED点阵屏、如何进行数据串行输入&#xff0c;并行输出以及LED点阵屏显示一列多列图形。 一、LED点阵屏 1.介绍 LED点阵屏由多个LED组成&#xff0c;以矩阵形式排列&#xff08;类似于矩阵键盘&…

配置及第三方授权申请教程

项目需要配置的地方不多&#xff0c;主要就两个地方需要注意&#xff1a;邮箱授权和第三方授权需要提前申请 1.基本设置 1.1 打开application.yml&#xff0c;修改数据库ip等基本信息 这些基本的配置就不多说了&#xff0c;基本就是改下服务器ip和账号密码什么的 1.2 获取QQ…

软件详细设计说明书(套用案例)

2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4设计目标 2.5.1总体原则 2.5.2实用性和先进性 2.5.3标准化、开放性、兼容性 2.5.4高可靠性、稳定性 2.5.5易用性 2.5.6灵活性和可扩展性 2.5.7经济性和投资保护 3系统功能模块详细设计 3.1个人办公…

【c++】string类常见接口函数

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好啊&#xff0c;本节我们来到STL内容的第一部分&#xff1a;string类接口函数的介绍 目录 1.string类的认识2.常见接口讲解2.1 string类对象的常见构造2.2 对string对象的遍历和…

【问题】解决1130-Host‘ ‘is not allowed to connect to this MySQL 本地无法连接服务器的数据库

【问题】解决1130-Host‘ ‘is not allowed to connect to this MySQL 本地无法连接服务器的数据库 原因: 默认mysql只允许 localhost 本地访问数据库, 解决方法 将 localhost 改为 % 所有 第一步 回车 输入密码 mysql -u root -p 第二步 切换数据库 use mysql 第三步 更新所…