echarts3生成关系网络关系力向图

本文详细介绍了如何使用echarts3.2.3创建关系网络力向图,包括力引导布局的工作原理、数据准备、option设置中的tooltip、color、legend、series等内容,以及回调函数在配置中的应用。
摘要由CSDN通过智能技术生成

echarts3生成关系网络关系力向图

力引导布局是模拟弹簧电荷模型在每两个节点之间添加一个斥力,每条边的两个节点之间添加一个引力,每次迭代节点会在各个斥力和引力的作用下移动位置,多次迭代后节点会静止在一个受力平衡的位置,达到整个模型的能量最小化。力引导布局的结果有良好的对称性和局部聚合性,也比较美观,我们也常常用来模拟人物关系等。

echarts3相比于之前的版本有着不小的变化,其生成力向图的资源在网上较少且不全,这里写一篇博客记录一下。


在引用了echarts.min.js文件后,首先在html中新建一个div作为图表的显示区域:

  <div id="chart"></div>

并定义样式:

<style media="screen">
      #chart{
        height: 500px;
        width: 100%;
      }
</style>

之后便开始进行力向图的数据准备,这一步需要对js中的数组和对象有所了解,如果数据格式不对图表是显示不出来的。echarts使用的数据是json格式,最外层用方括号[]表示,而里面的对象用大括号{}表示,对象内的映射用冒号:表示,并列数据用逗号分隔,我一般将其理解为对象数组。

这种形式的使用使得我们能够很方便的从数据库或其他地方调用到图表组件中,这里举一个例子数据如下:

[{category:0,name: 1, value :5,label: '乔布斯'},
{category:1, name: 2,value : 2,label: '丽萨-乔布斯'},
...]

在echarts3的力向图里面主要有两种数据,一种为节点(node)数据,一种为节点与节点之间的关系边(link)数据,这两种数据都是采用的json格式。

首先说明的是node数据:

{
   category:0,name: 1, value :5,label: '乔布斯'}

每一个{}里面为一个节点,category(该节点类别),name(关系连接的关键字,可以理解为键值中的键,可为string也可为数字)value(节点的值,可以设置节点半径与该值的关系),label(该字段是我用来显示该节点标签的,可以改名),除此之外大家也可以自己设置一些其他字段。

然后是link数据:


                
  • 18
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
人物关系导向是一种表形式,用于展示多个人物之间的关系。它可以用于社交网络分析、组织架构分析、知识谱等领域。在echarts中,可以使用graph组件实现人物关系导向。 以下是实现人物关系导向的步骤: 1. 引入echarts库和graph组件 ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>人物关系导向</title> <script src="https://cdn.jsdelivr.net/npm/echarts@5.2.2/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts-gl@1.1.4/dist/echarts-gl.min.js"></script> </head> <body> <div id="main" style="width: 100%;height: 800px;"></div> <script> // 引入graph组件 echarts.use([require('echarts/chart/graph'), require('echarts/chart/lines')]); </script> </body> </html> ``` 2. 准备数据 ```javascript var data = { nodes: [ { name: '张三', category: 0 }, { name: '李四', category: 1 }, { name: '王五', category: 1 }, { name: '赵六', category: 2 }, { name: '钱七', category: 2 }, { name: '孙八', category: 2 }, ], links: [ { source: 0, target: 1 }, { source: 0, target: 2 }, { source: 1, target: 3 }, { source: 1, target: 4 }, { source: 2, target: 5 }, ] }; ``` nodes数组表示每个人物,包括姓名和所属类别(用于分类显示)。links数组表示人物之间的关系,每个关系由source和target表示,分别指向源节点和目标节点。 3. 配置echarts选项 ```javascript var option = { tooltip: {}, legend: { data: ['同事', '朋友', '亲戚'] }, series: [ { type: 'graph', layout: 'force', symbolSize: 50, roam: true, label: { show: true, position: 'right', formatter: '{b}' }, force: { repulsion: 100 }, data: data.nodes, links: data.links, categories: [ { name: '同事' }, { name: '朋友' }, { name: '亲戚' } ] } ] }; ``` 其中,type为graph表示使用graph组件,layout为force表示使用导向布局。symbolSize表示节点大小,roam表示是否开启拖拽和缩放。label表示节点标签,formatter为标签格式化函数。force表示导向布局的参数,repulsion表示节点之间的斥大小。categories用于分类显示,每个类别包括名称和对应的索引。 4. 渲染echarts表 ```javascript var chart = echarts.init(document.getElementById('main')); chart.setOption(option); ``` 最终效果如下所示: ![人物关系导向](https://img-blog.csdnimg.cn/20210902161120193.png)
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值