前端vue uni-app使用Vue和ECharts构建交互式树形结构图

题目:使用Vue和ECharts构建交互式树形结构图

摘要:本文介绍了如何使用Vue.js和ECharts构建一个交互式的树形结构图。通过整合ECharts的强大可视化功能,我们创建了一个可拖拽移动、点击展开和收缩的树形结构图,并实现了无限添加子集的功能。

图片

一、引言

随着数据可视化的快速发展,树形结构图作为一种常用的数据展示方式,被广泛应用于展示层次结构、关系网络和数据分类等场景。特别是在Web前端开发中,使用Vue.js等前端框架结合ECharts等可视化库,可以轻松实现树形结构图的交互式展示。

二、技术选型

  1. Vue.js:Vue.js是一款流行的前端框架,用于构建用户界面。它采用组件化的方式组织代码,使得前端开发更加模块化和可维护。

  2. ECharts:ECharts是一款使用JavaScript实现的开源可视化库,提供了丰富的图表类型和强大的交互功能。它能够方便地与Vue.js集成,实现数据驱动的可视化。

三、实现过程

  1. 安装依赖:首先,确保你的项目中已经安装了Vue.js和ECharts。你可以通过npm或yarn进行安装。例如,使用以下命令安装ECharts:

 

shell复制代码

npm install echarts --save
  1. 创建Vue组件:在Vue项目中,创建一个新的Vue组件用于承载树形结构图。在该组件的模板中,添加一个div元素作为ECharts图表的容器,并为其指定一个唯一的ID。

  2. 初始化图表:在Vue组件的mounted钩子函数中,初始化ECharts图表。首先获取容器的DOM元素,然后使用ECharts的init方法创建一个图表实例。接着,定义图表的配置项和数据。

  3. 配置树形图:在ECharts的配置项中,使用series属性配置树形图的数据。指定series的类型为"tree",并设置相应的数据和选项。例如,设置节点名称、颜色、子节点等。

  4. 实现交互功能:为了使树形图具有交互性,你可以使用ECharts提供的事件处理函数。例如,监听"click"事件来处理节点点击事件,实现展开或收缩节点的功能。同时,也可以监听"drag"事件来实现节点的拖拽移动功能。

  5. 无限添加子集:为了支持无限添加子集的功能,你可以在用户点击节点时动态生成新的子节点,并将其添加到树形图的数据中。然后重新渲染图表以显示新添加的子节点。

    实现代码如下:

    HTML代码部分
    复制代码<template><view class="content"><view class="titleIos"></view><div class="mui-content" style="margin-top: 16px;"><div id="container" style="height: 86vh; margin-top: 0px;"></div></div></view>
    </template>
    
    JS代码 (引入组件 填充数据)
    复制代码
    <script>import echarts from '../../static/h5/echarts.min.js'export default {data() {return {}},onReady() {},onLoad: function(e) {console.log(e);},onShow() {},mounted() {this.treeData()},methods: {treeData() {var dom = document.getElementById("container");var myChart = echarts.init(dom);//  颜色设定 不同颜色寓意不同权重var fatherColor = 'green';var midColor = 'rgb(193, 92, 31)';var smallColor = 'rgb(247, 203, 174)';var option;// 新能源汽车let swyyQ = {"name": "新能源汽车",itemStyle: {color: midColor},"children": [{"name": "大型企业",itemStyle: {color: fatherColor},},{"name": "中型企业",itemStyle: {color: midColor},},{"name": "小型企业",itemStyle: {color: smallColor},},{"name": "其他规模企业",itemStyle: {color: fatherColor},}]};// 新材料行业let xclkQ = {"name": "生物与新医药",itemStyle: {color: fatherColor},"children": [{"name": "大型企业",itemStyle: {color: fatherColor},},{"name": "中型企业",itemStyle: {color: midColor},},{"name": "小型企业",itemStyle: {color: smallColor},},{"name": "其他规模企业",itemStyle: {color: fatherColor},}]};;let data = {"name": "行业分类",itemStyle: {color: fatherColor},"children": [swyyQ, xclkQ]}// 获取网页宽度 设置树形条目实体宽高度let width = document.body.scrollWidth;let widthSize = 0.039 * width;if (widthSize > 36) {widthSize = 36;}let heightSize = widthSize * 2.2;myChart.setOption((option = {tooltip: {trigger: 'item',triggerOn: 'mousemove'},series: [{type: 'tree',data: [data],left: '2%',right: '2%',top: '8%',bottom: '20%',symbol: 'square',symbolSize: [widthSize, heightSize],orient: 'vertical',expandAndCollapse: true,initialTreeDepth: 2,label: {position: 'top',rotate: 0,verticalAlign: 'middle',align: 'center',fontSize: 12},leaves: {label: {position: 'bottom',rotate: -90,verticalAlign: 'middle',align: 'left'}},animationDurationUpdate: 150}]}));if (option && typeof option === 'object') {myChart.setOption(option);}},}}
    </script>
    
    CSS
    复制代码
    <style>.content {display: flex;flex-direction: column;}
    </style>
    

四、注意事项

  1. 数据驱动:由于树形图的数据是动态的,因此需要确保数据的有效性和准确性。在添加或更新节点时,要确保数据的层次结构和关系正确。

  2. 性能优化:由于树形图的数据量可能很大,因此需要注意性能优化。可以通过使用虚拟化技术来减少不必要的渲染和计算,提高图表渲染的效率。

  3. 可读性和用户体验:在设计树形图时,要注意图表的排版和布局,使得图表易于理解和操作。同时,根据实际需求调整颜色、字体等样式,以提高用户体验。

五、总结

通过整合Vue.js和ECharts,我们可以轻松地构建一个交互式的树形结构图。这种图表在展示层次结构和关系网络时非常有用,可以帮助用户更好地理解和分析数据。同时,利用Vue.js和ECharts的强大功能和灵活性,我们可以根据实际需求定制化图表的功能和样式,以满足各种场景的需求。

 阅读全文下载完整组件代码请关注微信公众号: 前端组件开发

d848d5658a07453c843277846948c608.png

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

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

相关文章

【ARMv8M Cortex-M33 系列 2.1 -- Cortex-M33 使用 .hex /.srec 文件介绍】

请阅读【嵌入式开发学习必备专栏 之Cortex-M33 专栏】 文章目录 HEX 文件介绍英特尔十六进制文件格式记录类型hex 示例Cortex-M 系列hex 文件的使用 hex 文件和srec 文件生成Motorola S-Record (srec) 格式 HEX 文件介绍 .hex 文件通常用于微控制器编程&#xff0c;包括 ARM C…

蜕变,我的2023

作者&#xff1a;苍何&#xff0c;前大厂高级 Java 工程师&#xff0c;阿里云专家博主&#xff0c;CSDN 2023 年 实力新星&#xff0c;土木转码&#xff0c;现任部门技术 leader&#xff0c;专注于互联网技术分享&#xff0c;职场经验分享。 &#x1f525;热门文章推荐&#xf…

react-router-dom5升级到6

前言 升级前版本为5.1.2 下载与运行 下载 npm install react-router-dom6运行 运行发现报错: 将node_modules删除&#xff0c;重新执行npm i即可 运行发现如下报错 这是因为之前有引用react-router-dom.min&#xff0c;v6中取消了该文件&#xff0c;所以未找到文件导致报错。…

抖音详情API:开发环境搭建与工具选择

随着短视频的流行&#xff0c;抖音已经成为了一个备受欢迎的社交媒体平台。对于开发人员而言&#xff0c;利用抖音详情API开发定制化的抖音应用具有巨大的潜力。本文将为你详细介绍开发抖音应用的开发环境搭建与工具选择&#xff0c;帮助你顺利地开始开发工作。 一、开发环境搭…

【网络安全 | Misc】miss_01 太湖杯

解压时提示输入密码&#xff1a; 如果 frFlags 或 deFlags 不为0会导致zip的伪加密 将deFlags的值修改为0 将9改为0&#xff0c;另存为123.zip&#xff1a; 即可绕过加密&#xff1a; 得到一个zip一个docx&#xff0c;但zip需要密码&#xff1a; 因此看docx有无敏感信息&#x…

机器学习、人工智能、深度学习的关系

人工智能(Artificial Intelligence&#xff0c;AI) 人工智能范围很广&#xff0c;它是一门新的科学与工程&#xff0c;是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的技术科学&#xff0c;研究内容涵盖语音识别、图像识别、自然语言处理、智能搜索和…

计算机毕业设计------ssm茶叶溯源系统

项目介绍 茶叶溯源系统&#xff0c;分为前台与后台。普通用户可在前台通过18位的编码查询茶叶的出售历史。 后台分为两种角色&#xff0c;管理员与经销商&#xff1b; 管理员主要功能包括&#xff1a; 主界面&#xff1b; 管理员管理&#xff1a;管理员列表、添加管理员&am…

跨域请求:Go语言下的“通天大道”

开场白&#xff1a;嘿&#xff0c;各位Go语言的爱好者们&#xff0c;你们是否曾经遇到过这样的困扰&#xff1a;当你的Go应用试图与另一个域的API进行交流时&#xff0c;突然跳出一个“未允许的跨域请求”的警告&#xff1f;别担心&#xff0c;今天&#xff0c;我们将一起在这条…

005、数据类型

1. 关于数据类型 Rust中&#xff0c;每个值都有其特定的数据类型&#xff0c;Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言&#xff0c;它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下&#xff0c;编译器可以根据我们如何绑定、使用变…

软件测试/测试开发丨Python 内置装饰器 学习笔记

内置类装饰器 不用实例化、直接调用提升代码的可读性 内置装饰器含义classmethod类方法staticmethod静态方法 普通方法 定义&#xff1a; 第一个参数为self&#xff0c;代表 实例本身 调用&#xff1a; 要有实例化的过程&#xff0c;通过 实例对象.方法名 调用 # 1. 定义 c…

unity控制摄像机几种视角实现方式

目录 1、按下鼠标右键可以实现摄像机上下左右旋转 2、自由视角 3、摄像头跟随视角 4、跟随自由视角 5、第一人称跟随视角 python学习汇总连接&#xff1a; 1、按下鼠标右键可以实现摄像机上下左右旋转 这段代码定义了一个名为CameraRotate的脚本&#xff0c;用于控制摄像…

2023年终总结 —— 我和CSDN相遇的第一年之“技术学习和个人成长的回顾与展望”

​ ​ &#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 &#x1f38a;对2023的总结与回顾&#x1f38a; &#x1f3c5;获奖记录 &#x1f4da;学…

机器学习库【03】:-NumPy-算术运算

一、说明 与常规数学一样&#xff0c;数组算术本质上是关于加法、减法、乘法和除法。在 中NumPy&#xff0c;此类操作是按元素执行的 [2]&#xff1a; NumPy 是 Numerical Python 的缩写&#xff0c;是 Python 生态系统中一个功能强大的库&#xff0c;它提供对大型多维数组和矩…

CentOS虚拟机硬盘管理

CentOS虚拟机硬盘管理 一、创建虚拟机时分配硬盘 创建虚拟机时&#xff0c;在下图这个页面需要重新选择一下硬盘&#xff0c;可以对硬盘进行配置。 默认自动分区 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e9ce72af3d934e75be95f7f86860e92b.png 选择确认分…

EasyExcel详解(结合官方文档)

EasyExcel 零、前言 文章是根据官方文档&#xff0c;加上自己的测试运行总结出来的&#xff0c;目前只总结的EasyExcel读的部分&#xff0c;写的部分还未完结&#xff0c;后续会更新1、官方文档 https://easyexcel.opensource.alibaba.com/2、EasyExcel的maven依赖 <!--…

私有部署ELK,搭建自己的日志中心(三)-- Logstash的安装与使用

一、部署ELK 上文把采集端filebeat如何使用介绍完&#xff0c;现在随着数据的链路&#xff0c;继续~~ 同样&#xff0c;使用docker-compose部署&#xff1a; version: "3" services:elasticsearch:container_name: elasticsearchimage: elastic/elasticsearch:7.9…

git基础概念和常用命令(日常开发收藏备用)

目录 ### 常用命令 ### 远程仓库与克隆 ### 分支管理 ### 子模块&#xff08;Submodule&#xff09; ### 其他高级操作 ### 交互式暂存&#xff08;Interactive Staging&#xff09; ### cherry-pick ### rebase ### reflog与reset ### 子树合并&#xff08;Subtree …

【LearnOpenGL基础入门——5】着色器

目录 一.简介 二.GLSL 三.数据类型 四.输入与输出 五.Uniform 六.更多属性 一.简介 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立…

【基础】【Python网络爬虫】【5.数据解析】bs4、Xpath、Parsel模块、正则表达式(附大量案例代码)(建议收藏)

Python网络爬虫基础 数据解析1. 为何数据解析2. 常见的数据类型结构化数据半结构化数据非结构化数据 3. 爬虫项目实现步骤 数据解析模块1. Bs4环境安装bs4解析流程案例 - bs4碧血剑文本爬取 2. Xpath环境安装xpath解析的编码流程xpath表达式如何理解&#xff1f;案例 - 简历模板…

第3课 使用FFmpeg获取并播放音频流

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具&#xff0c;其源码有太多值得研究的地方。但对于大多数初学者而言&#xff0c;如何快速利用相关的API写出自己想要的东西才是迫切需要…