echarts关系图配置,及超出范围处理 + a、b两个节点互相指向时线上的字重叠问题

本文主要是介绍echarts关系图配置,及超出范围处理 + a、b两个节点互相指向时线上的字重叠问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

情景:由于人物关系复杂,可以有几个 ——几十个(上百个),所以固定范围内(如:500高度)可能放不下,或者太空。所以可以根据node节点(也可根据其他判断条件)来动态修改 div / canvas高度。如果还是超出(eg:节点或者关系多),可添加roam:true的属性实现可平移拖拽 / 缩放。(在下一节讲述)

效果如图:(图与下面配置的属性出来的效果不完全相符 ------- 因为配置会不定期更新)

修改高度

数据:

// 数据
let data = {nodes = [// {symbol: 'image://http://127.0.0.1:8080/icon/littleMan_blue1.png'/ symbol: 'circle',symbolSize: 80, name: "李小璐", category: 0},{symbolSize: 80,name: "李小璐",category: 0},{symbolSize: 60,name: "贾乃亮",category: 1},{symbolSize: 40,name: "王子文",category: 2},{symbolSize: 60,name: "葛优",category: 1},{symbolSize: 40,name: "陈飞宇",category: 2},{symbolSize: 60,name: "乔任梁",category: 1},{symbolSize: 40,name: "赵英博",category: 2},{symbolSize: 60,name: "赵英俊",category: 1},{symbolSize: 40,name: "张杰",category: 2},{symbolSize: 40,name: "大鹏",category: 2},{symbolSize: 40,name: "王源",category: 2},{symbolSize: 40,name: "袁姗姗",category: 2},{symbolSize: 40,name: "徐峥",category: 2},{symbolSize: 40,name: "卢正雨",category: 2},{symbolSize: 40,name: "董成鹏",category: 2},{symbolSize: 40,name: "王宝强",category: 2},{symbolSize: 40,name: "李宇春",category: 2},{symbolSize: 40,name: "薛之谦",category: 2},{symbolSize: 40,name: "陈思诚",category: 2},{symbolSize: 40,name: "杨庆",category: 2},{symbolSize: 40,name: "赵本山",category: 2},{symbolSize: 40,name: "张靓颖",category: 2},{symbolSize: 40,name: "包贝尔",category: 2},{symbolSize: 40,name: "高超",category: 2},{symbolSize: 40,name: "李荣浩",category: 2},{symbolSize: 40,name: "张文",category: 2},{symbolSize: 40,name: "张译",category: 2},{symbolSize: 60,name: "pgone",category: 1}],categories = [ //symbol name:用于和 legend 对应以及格式化 tooltip 的内容。 label有效//    每一级的单独设置{name: "类目一",symbol: 'rect',// 一级节点的图形,如:'circle'label: { //圆点标签样式show: true,color: '#cde6c7',//一级节点颜色fontSize:18,//一级节点字体大小},normal: {color: 'red', //所有一级的节点色},itemStyle : { //节点(方块/圆点)配置normal: {color: colorList[ind],//一级节点圆点背景色}}},{name: "类目二",symbol: 'rect',label: { //标签样式show: true,color: '#cde6c7'},normal: {color: 'pink', //所有二级的节点色}},{name: "类目三",symbol: 'rect',label: { //标签样式show: true,color: '#cde6c7'},normal: {color: 'yellow', //所有三级的节点色}}],links = [//source可以为number、string类型(如 name)。edges是其别名代表节点间的关系数据。{source: "李小璐",value: "结婚",target: "贾乃亮"},{source: "贾乃亮",value: "合作",target: "王子文"},{source: "贾乃亮",value: "合作",target: "赵英俊"},{source: "李小璐",value: "合作",target: "贾乃亮"},{source: "李小璐",value: "合作",target: "葛优"},{source: "葛优",value: "合作",target: "陈飞宇"},{source: "李小璐",value: "合作",target: "乔任梁"},{source: "乔任梁",value: "合作",target: "赵英博"},{source: "李小璐",value: "合作",target: "赵英俊"},{source: "赵英俊",value: "合作",target: "张杰"},{source: "赵英俊",value: "合作",target: "大鹏"},{source: "赵英俊",value: "合作",target: "王源"},{source: "赵英俊",value: "合作",target: "袁姗姗"},{source: "赵英俊",value: "合作",target: "徐峥"},{source: "赵英俊",value: "合作",target: "卢正雨"},{source: "赵英俊",value: "合作",target: "董成鹏"},{source: "赵英俊",value: "合作",target: "王宝强"},{source: "赵英俊",value: "合作",target: "李宇春"},{source: "赵英俊",value: "合作",target: "薛之谦"},{source: "赵英俊",value: "合作",target: "陈思诚"},{source: "赵英俊",value: "合作",target: "杨庆"},{source: "赵英俊",value: "合作",target: "赵本山"},{source: "赵英俊",value: "合作",target: "张靓颖"},{source: "赵英俊",value: "合作",target: "包贝尔"},{source: "赵英俊",value: "合作",target: "高超"},{source: "赵英俊",value: "合作",target: "李荣浩"},{source: "赵英俊",value: "合作",target: "张文"},{source: "赵英俊",value: "合作",target: "张译"},{source: "李小璐",value: "分手",target: "pgone"},{source: "李小璐",value: "分手",target: "贾乃亮"}]
}

(echarts) option配置:

let option={title: {text: '人物关系图谱'},tooltip: { //鼠标hover的提示语show: true, //默认值为trueshowContent: true, //是否显示提示框浮层trigger: 'item', //触发类型,默认数据项触发triggerOn: 'click', //提示触发条件,mousemove鼠标移至触发,还有click点击触发alwaysShowContent: false, //默认离开提示框区域隐藏,true为一直显示showDelay: 0, //浮层显示的延迟,单位为 ms,默认没有延迟,也不建议设置。在 triggerOn 为 'mousemove' 时有效。hideDelay: 200, //浮层隐藏的延迟,单位为 ms,在 alwaysShowContent 为 true 的时候无效。enterable: false, //鼠标是否可进入提示框浮层中,默认为false,如需详情内交互,如添加链接,按钮,可设置为 true。position: 'right', //提示框浮层的位置,默认不设置时位置会跟随鼠标的位置。只在 trigger 为'item'的时候有效。confine: false, //是否将 tooltip 框限制在图表的区域内。外层的 dom 被设置为 'overflow: hidden',或者移动端窄屏,导致 tooltip 超出外界被截断时,此配置比较有用。transitionDuration: 0.4, //提示框浮层的移动动画过渡时间,单位是 s,设置为 0 的时候会紧跟着鼠标移动。// formatter: function (x) {// 提示内容//     return x.data.des;// }},animationDuration: 1500, //数据更新动画的时长。animationEasingUpdate: 'quinticInOut', //数据更新动画的缓动效果。color: ['#4472C5', '#ED7C30', '#80FF80', '#FF8096', '#800080', '#7288aa'],legend: { //=========圖表控件show: true,textStyle: { //标签的字体样式color: '#cde6c7', //字体颜色fontStyle: 'normal', //文字字体的风格 'normal'标准 'italic'斜体 'oblique' 倾斜//fontWeight: 'bolder',//'normal'标准'bold'粗的'bolder'更粗的'lighter'更细的或100 | 200 | 300 | 400...fontFamily: 'sans-serif' //文字的字体系列},data: [{name: '负载',icon: 'roundRect', //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'},{name: '中间件',icon: 'roundRect'}, {name: '端口号',icon: 'circle'}, {name: '数据库',icon: 'pin'}, {name: '用户名',icon: 'roundRect'}]},series: [{type: 'graph', //关系图name: "监控管理系统", //系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。layout: 'circular', // 图的布局。[ default: 'none' ]// 'none' 不采用任何布局,使用节点中提供的 x, y 作为节点的位置。// 'circular' 采用环形布局;'force' 采用力引导布局.legendHoverLink: true, //是否启用图例 hover(悬停) 时的联动高亮。hoverAnimation: true, //是否开启鼠标悬停节点的显示动画coordinateSystem: null, //坐标系可选xAxisIndex: 0, //x轴坐标 有多种坐标系轴坐标选项yAxisIndex: 0, //y轴坐标force: { //力引导图基本配置//initLayout: ,//力引导的初始化布局,默认使用xy轴的标点repulsion: 200, //节点之间的斥力因子。支持数组表达斥力范围,值越大斥力越大。gravity: 0.02, //节点受到的向中心的引力因子。该值越大节点越往中心点靠拢。edgeLength: 80, //边的两个节点之间的距离,这个距离也会受 repulsion。[10, 50] 。值越小则长度越长layoutAnimation: true//因为力引导布局会在多次迭代后才会稳定,这个参数决定是否显示布局的迭代动画,在浏览器端节点数据较多(>100)的时候不建议关闭,布局过程会造成浏览器假死。},roam: true, //是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启nodeScaleRatio: 0.6, //鼠标漫游缩放时节点的相应缩放比例,当设为0时节点不随着鼠标的缩放而缩放draggable: false, //节点是否可拖拽,只在使用力引导布局(layout: 'force',)的时候有用。focusNodeAdjacency: true, //是否在鼠标移到节点上的时候突出显示节点以及节点的边和邻接节点。//symbol:'roundRect',//关系图节点标记的图形。ECharts 提供的标记类型包括 'circle'(圆形), 'rect'(矩形), 'roundRect'(圆角矩形), 'triangle'(三角形), 'diamond'(菱形), 'pin'(大头针), 'arrow'(箭头)  也可以通过 'image://url' 设置为图片,其中 url 为图片的链接。'path:// 这种方式可以任意改变颜色并且抗锯齿//symbolSize:10 ,//也可以用数组分开表示宽和高,例如 [20, 10] 如果需要每个数据的图形大小不一样,可以设置为如下格式的回调函数:(value: Array|number, params: Object) => number|Array//symbolRotate:,//关系图节点标记的旋转角度。注意在 markLine 中当 symbol 为 'arrow' 时会忽略 symbolRotate 强制设置为切线的角度。//symbolOffset:[0,0],//关系图节点标记相对于原本位置的偏移。[0, '50%']edgeSymbol: ['circle', 'arrow'], //边两端的标记类型,可以是一个数组分别指定两端,也可以是单个统一指定。默认不显示标记,常见的可以设置为箭头,如下:edgeSymbol: ['circle', 'arrow']edgeSymbolSize: 10, //边两端的标记大小,可以是一个数组分别指定两端,也可以是单个统一指定。itemStyle: { //===============图形样式,有 normal 和 emphasis 两个状态。normal 是图形在默认状态下的样式;emphasis 是图形在高亮状态下的样式,比如在鼠标悬浮或者图例联动高亮时。normal: { //默认样式label: {show: true},borderType: 'solid', //图形描边类型,默认为实线,支持 'solid'(实线), 'dashed'(虚线), 'dotted'(点线)。borderColor: 'rgba(255,255,255,0.4)', //设置图形边框为淡金色,透明度为0.4borderWidth: 0, //图形的描边线宽。为 0 时无描边。opacity: 1,shadowBlur: 10,shadowColor: 'rgba(0, 0, 0, 0.3)'// 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。默认0.5},emphasis: { //高亮状态borderType: 'solid', //图形描边类型,默认为实线,支持 'solid'(实线), 'dashed'(虚线), 'dotted'(点线)。borderColor: 'rgba(255,255,255,0.4)', //设置图形边框为淡金色,透明度为0.4borderWidth: 2 //图形的描边线宽。为 0 时无描边。}},lineStyle: { //==========关系边的公用线条样式。normal: {color: 'source',//线的颜色与节点颜色一致// color: 'black',//线的颜色都为此固定色width: '2',type: 'solid', //线的类型 'solid'(实线)'dashed'(虚线)'dotted'(点线)curveness: 0.3, //线条的曲线程度,从0到1 ---  不加弧度,两节点互相指向时,线上的字会重叠opacity: 1// 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。默认0.5},emphasis: { //高亮状态width: 10}},label: { //=============图形上的文本标签normal: {show: true, //是否显示标签。position: 'right', //标签的位置。['50%', '50%'] [x,y]textStyle: { //标签的字体样式color: '#cde6c7', //字体颜色fontStyle: 'normal', //文字字体的风格 'normal'标准 'italic'斜体 'oblique' 倾斜fontWeight: 'bolder', //'normal'标准'bold'粗的'bolder'更粗的'lighter'更细的或100 | 200 | 300 | 400...fontFamily: 'sans-serif', //文字的字体系列fontSize: 12, //字体大小}},emphasis: { //高亮状态}},edgeLabel: { //==============线条的边缘标签 + 线上的字体设置normal: {show: true,fontWeight: 'bolder',//字体加粗lineHeight: 0.2,//字与线之间的距离textStyle: {color: '#333333',//字体颜色fontSize: 8, //line线上字体大小fontWeight: 'bold'},formatter: '{c}',},emphasis: { //高亮状态}},//别名为nodes   name:影响图形标签显示,value:影响选中后值得显示,category:所在类目的index,symbol:类目节点标记图形,symbolSize:10图形大小//label:标签样式。data: data.nodes,categories: data.categories,links: data.links}]
};

 

( a、b两个节点互相指向时,线上的字重叠问题

添加此属性(弧度)即可,效果如下图:

curveness:0.3     

 

curveness:0(前夫 与结婚 重叠

 

 

这篇关于echarts关系图配置,及超出范围处理 + a、b两个节点互相指向时线上的字重叠问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨