echarts树图-实现拓扑图效果

使用echarts树图来实现拓扑图效果,其效果如下:
在这里插入图片描述

代码如下:

const data = {
  name: 'XXX公司',
  children: [
    {
      name: '网络主机',
      children: [
        {
          name: '普通路由器',
          children: [
            {
              name: '智能网关'
            },
            {
              name: '192.168.1.0/24'
            }
          ]
        }
      ]
    },
    {
      name: '企业路由器'
    },
    {
      name: '三级交换机'
    }
  ]
};
option = {
  type: 'tree', // tree
  // backgroundColor: '#000',// 整个树图谱背景色  默认白色
  tooltip: {
    //提示框  // 触发方式 mousemove, click, none, mousemove|click
    triggerOn: 'mousemove',
    // item 图形触发, axis 坐标轴触发, none 不触发 // triggerOn: 'click',
    trigger: 'item',

    // 自定义数据
    formatter: function (params) {
      const str = `
              <div style="background:#FFF;display: flex;justify-content: space-between; gap:10px">
                <div>
                  <p>名称:</p>
                  <p>编号:</p>
                  <p>状态:</p>
                </div>
                <div style="text-align: right">
                  <p>${params.name || '-'}</p>
                  <p>测试设备</p>
                  <p style="color:${params.status ? 'green' : ''}">${
        params.status ? '在线' : '离线'
      }</p>
                </div>
              </div>`;
      return str;
    }
  },
  series: [
    {
      type: 'tree',
      data: [data], //
      // 整个图谱位置比例
      top: 30, //0
      bottom: 60, // 0
      left: 0,
      right: 0,
      // 布局
      layout: 'radial',
      symbol: 'circle',
      symbolSize: 40, // 节点大小
      // nodePadding的数组值为[10, 20],表示第一层节点与第二层节点之间的水平间距为10,垂直间距为20。
      nodePadding: 20, // 20
      animationDurationUpdate: 550, // 动画过渡时间  毫秒
      expandAndCollapse: false, //子树折叠和展开的交互,默认打开
      initialTreeDepth: 2, // 设置树状图的初始展示层数
      roam: true, //是否开启鼠标缩放和平移漫游。scale/move/true
      focusNodeAdjacency: true, //
      zoom: 1.2,
      //节点样式
      itemStyle: {
        borderWidth: 1,
        color: '#00ADD0',
      },
      // 节点内文字标签
      label: {
        // show: false, // 控制展示
        //标签样式
        color: '#fff',
        fontSize: 14,
        position: 'inside', // outside
        rotate: 0, // 倾斜
        // 默认展示 不写也是params.name
        formatter: (params) => {
          //   不可用div
          return params.name.slice(0, 1);
        }
  
      },
      // 线样式
      lineStyle: {
        width: 1,
        curveness: 0.5
      }
    }
  ]
};

备注:可以在echarts官网示例中运行:https://echarts.apache.org/examples/zh/editor.html?c=tree-radial

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值