echarts树图

2024-02-02 08:48
文章标签 echarts 树图

本文主要是介绍echarts树图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用echarts做了两周(算上之前应该是4周)的树图,记录一下遇到的一些特性和问题。

特性:

1、echarts中绑定事件,通过 on方法

例如:绑定click方法

myChart.on('click', function (params) {console.log(params);
});

2、echarts的 on方法 先于 DOM点击事件执行。

3、echarts实例的 _chartsViews[0]._data 有很多有用的属性。

4、改变图表尺寸,在容器大小发生改变时需要手动调用:resize(width?: number|string, height?: number|string, silent?: boolean)。silent:是否禁止抛出事件。默认为 false

5、echarts的mousedown事件 先于 render函数执行,click事件后于render渲染函数执行。

问题:

1、给树的label增加点击事件

开始需求没有对树图的 symbol 节点的要求,于是把 symbol 节点改为方形,加上padding,背景色等,放置在文字后面,当点击文字时通过echarts的 on方法 实现具体点击事件。

2、点击文字( symbol节点 )弹出弹出框,点击其他地方,弹出框消失

通过控制 2 个boolean值(例:showBox 和 clickBlank)来控制弹出框的消失与显现——showBox :控制弹出框显现与消失; clickBlank:控制showBox值的改变。

clickBlank初始值设置为true,当点击到节点将clickBlank设置为false,整个echarts画布添加点击事件:当点击画布,若 clickBlank 为false,即点击到的空白处,则将showBox 置为false,若 clickBlank 为true,即点击的节点,则将 clickBlank 置为true。因为echarts的 on方法 先于 DOM点击事件执行,所以可以实现效果。

...
this.myChart.on('click', function (params) { //使用vuethis.clickBlank = false;
});
...
DomClick(){if(this.clickBlank){this.showBox = false;}else{this.clickBlank = true;}
}

3、不同节点个数以动态高度和宽度展示

高度:echarts实例的 _chartsViews[0]._data._graphicEls 数组中的值为 undefined 时,此节点是收起的。循环找到当前未收起的节点数 * 一个节点大致占的高度,设置树图的高度,则实现动态的高度了(不是很准确)。

宽度:echarts实例的 _chartsViews[0]._data.tree._nodes的 depth 是节点的层数,通过循环找到当前未收起的节点的最深层数 * 每层节点大致占的宽度来设置树图的宽度。

想要每次收起展开都动态的高度、宽度显示,则在on方法点击事件时计算一次,然后 调用echarts的 resize() 方法改变绘图大小。

4、每次浏览器窗口大小发生变化,改变图大小

window.addEventListener('resize',()=>{this.myEcharts.resize();});

5、个别节点不同样式

利用echarts的富文本标签。官网讲解地址

6、控制展开收起:仅部分节点可点击时展开收起

on方法的函数参数param的dataIndex是当前点击(触发)的节点编号,echarts实例的 _chartsViews[0]._data.tree._nodes的 isExpand 控制节点展开收起。使mousedown的时候isExpand变为相反值,则click时再变为相反值时就不会收起展开了。

this.myChart.on('mousedown',(param)=>{let nodeIndex = param.dataIndex;if(不是可展开收起的节点){this.myChart._chartsViews[0]._data.tree._nodes[nodeIndex] =  !this.myChart._chartsViews[0]._data.tree._nodes[nodeIndex]; }
})

7、点击节点动态加载新数据渲染新的子节点,并展开新节点

需要点击的节点有children属性。collapsed 属性可控制展开收起,false:展开。

this.myChart.on('mousedown',(param)=>{...//从后台获取数据param.data.children.push(新数据);param.data.collapsed = false; ...//动态高度宽度this.myChart.resize();
}

 

这篇关于echarts树图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670141

相关文章

Echarts使用笔记--饼图,柱状图

开始做前端了,感觉自己是要变成全栈工程师了。。。 今天使用了echart,用之前觉得好高大上好厉害,肯定很复杂。用了以后才发现,使用起来超简单,当然,精通很难,里面的各种配置太多了,本文记录一下自己用到的东西。 echart使用 现在直接引用js文件就可以了 <script src="echarts.min.js"></script> echart组件需要在一个宽高固定的DOM里才能显示

【python web】Flask+Echarts 实现动图图表

flask 是python web开发的微框架,Echarts酷炫的功能主要是javascript起作用,将两者结合起来,发挥的作用更大。下面将Echarts嵌套进Flask的html模板中。 项目结构: 打开demo.py运行,点击console中的链接http://127.0.0.1:5000/ 就可以看到我们想要的动态图表。 demo.py #coding:utf-8fro

echarts 多个3D柱状图

图片样式: 代码实现: <template><div :class="className" :style="{height:height,width:width}" /></template><script>require("echarts/theme/sakura"); // echarts themeexport default {props: {className: {typ

基于echarts车辆大数据综合分析平台

0.序言 基于ECharts的大数据综合分析平台技术框架与基本原理 技术框架 基于ECharts的大数据综合分析平台是一个集数据收集、处理、分析及可视化展示于一体的综合性系统。其技术框架主要可以分为以下几个层次: 数据源层: 数据收集:通过各种数据收集工具(如日志收集器、数据库同步工具等)从多个数据源(如关系型数据库、NoSQL数据库、日志文件、API接口等)收集数据。数据存储:将收集到的

echarts进度

echarts图表集 let numdata=["I级",'II级','III级','IV级','V级','劣V级']let pricedata=40option = {backgroundColor: '#0f375f',title: {show: false,text: '',left: 'center',top: '30%',textStyle: {color: '#00D5FF

echarts环形图

let dataValue=[{value: 30,name: '桥梁',percent: 0.25,color: 'rgba(248,95,94,1)',radius: ['75%', '80%'],center: ['22%', '50%'],},{value: 15,name: '隧道',percent: 0.25,color: 'rgba(243,185,71,1)',radius:

echarts多个环形图

echarts图表集  var dataValue = [{name:'今日待分配方量',value:49}, {name:'今日已分配方量',value:602}, {name:'今日完成方量',value:1037}]var piedata1 = [{name: '1#拌和机',value: 20},{name: '2#拌和机',value: 22},{name: '3#拌和机 ',va

echarts地图绘制并实现下钻功能

本文参考网址 使用echarts地图需要先准备好echarts地图渲染需要的json数据,数据可以从阿里云地址中下载自己需要的,下载之后直接引入即可使用,本文针对全国地图做一个简单的demo 阿里云界面如图 // 1、准备echarts地图容器<div class="map" ref="myChart" style="width:500px;height:500px;"></div>//

Vue3+Vite+Echarts 出现Missing semicolon错误

使用的echarts代码如下:   import * as echarts from 'echarts';type EChartsOption = echarts.EChartsOption;var chartDom = document.getElementById('main')!;var myChart = echarts.init(chartDom);var option: ECha

在 vue2 中实现 echarts 立体方形柱状图及立体圆柱

1、在做大屏项目时,为了页面不显得单调,有时设计会设计些立体的柱状图,前几天做大屏刚好遇到,记录一下。echarts本身没有配置直接配置立体图,立体图实质是三个图形合并堆积形成的视觉效果,分别是上面的盖,中间主体和下面的底,再配合中间主体的渐变颜色而实现。本文默认都是使用过echarts的,常规项不赘述,只看option的配置项,先上效果。 2、立体方块图  pdChartOptio