echars力引导关系图

效果图
在这里插入图片描述

力引导关系图

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

数据

chartData:{
          data:[
            {
              name: 'node1',
              symbolSize: 50,
              itemStyle:{
                color: '#fac858'
              }
            },
            {
              name: 'node2',
              symbolSize: 30,
              itemStyle:{
                color: '#91cc75'
              }
            },
            {
              name: 'node3',
              symbolSize: 30,
              itemStyle:{
                color: '#91cc75'
              }
            },
            {
              name: 'node4',
              symbolSize: 30,
              itemStyle:{
                color: '#91cc75'
              }
            },
            {
              name: 'node5',
              symbolSize: 30,
              itemStyle:{
                color: '#91cc75'
              }
            },
            {
              name: 'node6',
              symbolSize: 20
            },
            {
              name: 'node7',
              symbolSize: 20
            },
            {
              name: 'node8',
              symbolSize: 20
            },
            {
              name: 'node9',
              symbolSize: 20
            },
            {
              name: 'node10',
              symbolSize: 20
            },
            {
              name: 'node11',
              symbolSize: 20
            },
            {
              name: 'node12',
              symbolSize: 20
            },
          ],
          links:[
            {
              source: 'node1',
              target: 'node2'
            },
            {
              source: 'node1',
              target: 'node3'
            },
            {
              source: 'node1',
              target: 'node4'
            },
            {
              source: 'node1',
              target: 'node5'
            },
            {
              source: 'node2',
              target: 'node6'
            },
            {
              source: 'node2',
              target: 'node7'
            },
            {
              source: 'node3',
              target: 'node8'
            },
            {
              source: 'node4',
              target: 'node9'
            },
            {
              source: 'node5',
              target: 'node10'
            },
            {
              source: 'node4',
              target: 'node11'
            },
            {
              source: 'node3',
              target: 'node12'
            },
          ]
        }

Dom

<div id="tupuDom" style="height: 400px;margin-top: 20px;"></div>

函数

initChart(){
      let option = {};
      echarts.dispose(document.getElementById("tupuDom"))
      let charts = echarts.init(document.getElementById("tupuDom"));
        option = {
          tooltip: {
            trigger: 'item',             
          },
          series: [
            {
                name: 'Les Miserables',
                type: 'graph',
                // 采用力引导布局
                layout: 'force',
                force:{
                    // 节点之间的斥力因子
                    repulsion: 150,
                    // 显示布局的迭代动画,数据节点较多时建议开启
                    layoutAnimation: true,
                    // 边的两个节点之间的距离
                    edgeLength: 50
                },
                data: this.chartData.data,
                links: this.chartData.links,
                // 开启鼠标缩放和平移漫游
                roam: true,
                label: {
                    show: 'true',
                    position: 'inside',
                    // 'truncate': 截断,并在末尾显示ellipsis配置的文本,默认为…; ‘break’: 换行
                    overflow: 'truncate',
                    ellipsis: '...',
                    // 标签宽度
                    width: 50
                },
                lineStyle: {
                    // 连线的颜色
                    color: 'source',
                    // 边的曲度,从 0 到 1 的值,值越大曲度越大。
                    curveness: 0.3
                },
                emphasis: {
                    // 在高亮图形时,聚焦关系图中的邻接点和边的图形。
                    focus: 'adjacency',
                    // 高亮时线的宽度
                    lineStyle: {
                        width: 10
                    }
                },
                // 提示框信息
                tooltip: {
                    formatter: (item)=>{
                        if(item.data.name){
                            // 鼠标移入节点提示框信息
                            return item.name
                        }else{
                            // 鼠标移入线的提示框信息
                  	return item.data.source + '-'+item.data.target
                        }
                    }
                }
            }
        ]
      };
      charts.setOption(option);
    }

调用

this.initChart()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现人物关系导向,我们需要使用echarts中的关系(graph)组件。下面是一个简单的示例: ```javascript // 初始化echarts表 var myChart = echarts.init(document.getElementById('main')); // 指定表的配置项和数据 var option = { // 设置关系类型 series: [{ type: 'graph', // 指定节点数据 data: [ { name: '张三', symbolSize: 80 }, { name: '李四', symbolSize: 60 }, { name: '王五', symbolSize: 50 }, { name: '赵六', symbolSize: 40 }, { name: '钱七', symbolSize: 30 }, ], // 指定节点间的关系数据 links: [ { source: '张三', target: '李四' }, { source: '张三', target: '王五' }, { source: '李四', target: '赵六' }, { source: '王五', target: '赵六' }, { source: '钱七', target: '赵六' }, ], // 指定节点的样式 itemStyle: { color: '#00BFFF' }, // 指定边的样式 lineStyle: { color: '#000' }, // 指定节点标签的样式 label: { show: true, position: 'right', formatter: '{b}' }, // 指定节点间的引导作用 force: { repulsion: 200 } }] }; // 使用刚指定的配置项和数据显示表。 myChart.setOption(option); ``` 在上面的示例中,我们首先使用`echarts.init()`方法初始化一个echarts表,然后指定了一个关系(graph)类型的系列。在系列中,我们指定了节点数据和节点间的关系数据,使用了一些简单的样式设置,最后使用了`force`属性来指定节点间的引导作用。 在实际使用中,我们可以根据需要调整节点数据、边数据、样式和引导作用等参数,从而实现更加复杂和生动的人物关系导向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格格不入ち

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值