Echarts关系图实现两个节点连接同向的多条边(详细)

1、改源码

在Echarts官网上有很多关系图示例(传送门)
但是这些图两点之间最多两条边,并且方向相反。但是在社交网络分析作图时常常遇到两个人物(节点)之间存在多种关系且指向相同(方向相同的多边)。写代码过程中有意加多边然而出现覆盖现象,就算手动控制弧度也不会显示同方向边,而官方文档中并未提及相关代码。怀疑是源文件中有严格控制条件,经查阅echart源文件echarts.min.js,果然有剔除重复边的代码,如fig1红框中代码。将此限制条件注释即可实现需求。
在这里插入图片描述
Fig 1. 文件echarts.min.js修改处示意图

2、改弧度

虽然修改了源码,保证不会删除重复边,但还要注意重复边的覆盖,因此要修改边弧度,可以写函数控制弧度(curveness)根据边的数量增加。对此有相关博客可参阅,实例中数据较少,就直接在lineStyle中定义了,如fig2:
在这里插入图片描述
Fig 2. 关系边数据定义示意

3、美化

相关代码很多,大概做出来如fig3
在这里插入图片描述
Fig 3. 初步示例

4、交互时信息提示

Echarts官网示例上很多实用好看的交互效果,下面实现的是鼠标悬停显示边或节点的信息。
在这里插入图片描述
Fig 4. 添加鼠标交互代码

Fig 5. 有交互的同向多边关系图

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
以下是一个使用 Echarts 中 type 为 tree 的树形关系实现节点连接的示例代码: ```javascript // HTML <div id="chart" style="width: 600px; height: 400px;"></div> // JavaScript // 假设有以下节点的数据 var data = { name: 'Root', children: [ { name: 'Node 1', image: 'node1.png', children: [ { name: 'Node 1.1', image: 'node1_1.png' }, { name: 'Node 1.2', image: 'node1_2.png' } ] }, { name: 'Node 2', image: 'node2.png', children: [ { name: 'Node 2.1', image: 'node2_1.png' }, { name: 'Node 2.2', image: 'node2_2.png' } ] } ] }; // 初始化 Echarts 实例 var chart = echarts.init(document.getElementById('chart')); // 配置项 var option = { series: [ { type: 'tree', data: [data], top: '10%', left: '10%', bottom: '10%', right: '10%', symbol: 'image://', // 节点使用 image 符号 symbolSize: [60, 60], // 节点的大小 layout: 'orthogonal', // 布局方式为正交布局 emphasis: { focus: 'descendant' // 强调样式为当前节点及其后代节点 }, label: { position: 'inside', verticalAlign: 'middle', align: 'center', fontSize: 14 }, leaves: { label: { position: 'right', verticalAlign: 'middle', align: 'left', fontSize: 14 } }, expandAndCollapse: true, // 可以展开和折叠节点 animationDuration: 550, animationDurationUpdate: 750 } ] }; // 使用配置项绘制表 chart.setOption(option); ``` 以上代码示例中,通过配置项中的 `type: 'tree'`,使用片作为节点的符号,并设置了节点的大小、布局方式、节点样式等属性。可以根据实际需求进行调整和扩展。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值