树状图 标签节点拖拽

一、描述

开始用的echarts画的树状图,然后拖拽功能没有实现,百度了很多也没实现,最后发现了一个好的图可视化引擎——antv g6。官网地址:G6 - AntV

 话不多说,直接上树状图可拖拽案例

生成树状 效果图:

 此效果图是  随意拖拽后  截图了一下:

 二、代码实现

1、下载 

npm install --save @antv/g6     案例版本为  4.8.12

2、导入模块

import G6 from '@antv/g6'

3、创建标签

 <div id="mountNode1" />

4、js编写   

data里面的nodes是所有的标签节点信息,edges是每个标签节点关系之间的指向谁。

该案例配置项参考地址    https://www.yuque.com/antv/g6/graph

init() {
      const data = {
        nodes: [
          {
            id: 'node1',
            type: 'image', // 设置节点类型为 image
            img: 'https://img0.baidu.com/it/u=1668758195,2574371464&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=666',
            size: [40, 40] // 图片大小
          },
          {
            id: 'node2',
            type: 'image', // 设置节点类型为 image
            img: 'https://img0.baidu.com/it/u=910887682,3967331123&fm=253&fmt=auto&app=138&f=JPEG?w=721&h=500',
            size: [40, 40] // 图片大小
          },
          {
            id: 'node3',
            type: 'image', // 设置节点类型为 image
            img: 'https://img0.baidu.com/it/u=910887682,3967331123&fm=253&fmt=auto&app=138&f=JPEG?w=721&h=500',
            size: [40, 40] // 图片大小
          },
          {
            id: 'node4',
            type: 'image', // 设置节点类型为 image
            img: 'https://img0.baidu.com/it/u=910887682,3967331123&fm=253&fmt=auto&app=138&f=JPEG?w=721&h=500',
            size: [40, 40] // 图片大小
          },
          {
            id: 'node5',
            type: 'image', // 设置节点类型为 image
            img: 'https://img0.baidu.com/it/u=910887682,3967331123&fm=253&fmt=auto&app=138&f=JPEG?w=721&h=500',
            size: [40, 40] // 图片大小
          },
          {
            id: 'node6',
            type: 'image', // 设置节点类型为 image
            img: 'https://img0.baidu.com/it/u=910887682,3967331123&fm=253&fmt=auto&app=138&f=JPEG?w=721&h=500',
            size: [40, 40] // 图片大小
          },
          {
            id: 'node7',
            type: 'image', // 设置节点类型为 image
            img: 'https://img0.baidu.com/it/u=910887682,3967331123&fm=253&fmt=auto&app=138&f=JPEG?w=721&h=500',
            size: [40, 40] // 图片大小
          }
        ],
        edges: [
          {
            source: 'node1',
            target: 'node2'
          },
          {
            source: 'node1',
            target: 'node3'
          },
          {
            source: 'node1',
            target: 'node4'
          },
          {
            source: 'node2',
            target: 'node5'
          },
          {
            source: 'node2',
            target: 'node6'
          },
          {
            source: 'node3',
            target: 'node7'
          }
        ]
      }
      //   配置项参考地址  https://www.yuque.com/antv/g6/graph
      var graph = new G6.Graph({
        container: 'mountNode1',
        width: 1100, // 画布的宽度
        height: 400, // 画布的高度
        modes: {
          default: ['drag-canvas', 'drag-node']
        },
        layout: {
          type: 'dagre',
          nodeSize: [80, 20],
          nodesep: 5, // 节点间距(px)  节点水平间距  默认50
          ranksep: 20 // 层间距(px) 父子之间层级间距  默认50
        },
        animate: true, // 切换布局时是否使用动画过度
        defaultNode: { // 默认状态下节点的配置
          size: [60, 30],
          color: 'steelblue',
          shape: 'rect',
          style: {
            lineWidth: 2,
            fill: '#fff'
          }
        },
        defaultEdge: { // 默认状态下边的配置
          size: 1,
          color: '#e2e2e2',
          style: {
            endArrow: {
              path: 'M 4,0 L -4,-4 L -4,4 Z',
              d: 4
            }
          }
        }
      })
      graph.data(data)
      graph.render()
    }

由于echarts绘画树状图没能实现标签节点拖拽功能,所以才换成了antv-g6代替。

如有大佬echarts能帮忙实现,请留言!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茶杯茶凉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值