首页 > 其他分享 >关系网demo

关系网demo

时间:2024-01-25 15:16:06浏览次数:25  
标签:node const attr demo Company Sub 关系网 name

树状图显示层级关系,使用d3js
竖形

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Company Tree Chart</title>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <style>
      .node circle {
        fill: #fff;
        stroke: red;
        stroke-width: 1.5px;
      }

      .node text {
        font: 12px sans-serif;
      }
    </style>
  </head>
  <body>
    <svg width="600" height="400"></svg>
    <script>
      const data = {
        name: "Company A",
        children: [
          {
            name: "Sub Company 1",
            children: [{ name: "Sub Company 1A" }, { name: "Sub Company 1B" }],
          },
          {
            name: "Sub Company 2",
            children: [{ name: "Sub Company 2A" }, { name: "Sub Company 2B" }],
          },
        ],
      };

      const width = 600;
      const height = 400;

      const svg = d3
        .select("svg")
        .attr("width", width)
        .attr("height", height)
        .append("g")
        .attr("transform", "translate(20,20)");

      const tree = d3.tree().size([width - 40, height - 40]);

      const root = d3.hierarchy(data);
      tree(root);

      const link = svg
        .selectAll(".link")
        .data(root.links())
        .enter()
        .append("path")
        .attr("class", "link")
        .attr(
          "d",
          d3
            .linkVertical()
            .x((d) => d.x)
            .y((d) => d.y)
        );

      const node = svg
        .selectAll(".node")
        .data(root.descendants())
        .enter()
        .append("g")
        .attr("class", "node")
        .attr("transform", (d) => `translate(${d.x},${d.y})`);

      node.append("circle").attr("r", 5);

      node
        .append("text")
        .attr("dy", "0.31em")
        .attr("x", (d) => (d.children ? -6 : 6))
        .style("text-anchor", (d) => (d.children ? "end" : "start"))
        .text((d) => d.data.name);
    </script>
  </body>
</html>

 横形

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Company Tree Chart</title>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <style>
      .node circle {
        fill: #fff;
        stroke: red;
        stroke-width: 1.5px;
      }

      .node text {
        font: 12px sans-serif;
      }
    </style>
  </head>
  <body>
    <svg width="600" height="400"></svg>
    <script>
      const data = {
        name: "Company A",
        children: [
          {
            name: "Sub Company 1",
            children: [{ name: "Sub Company 1A" }, { name: "Sub Company 1B" }],
          },
          {
            name: "Sub Company 2",
            children: [{ name: "Sub Company 2A" }, { name: "Sub Company 2B" }],
          },
        ],
      };

      const width = 600;
      const height = 400;

      const svg = d3
        .select("svg")
        .attr("width", width)
        .attr("height", height)
        .append("g")
        .attr("transform", "translate(80,10)"); // 调整g的位置

      const tree = d3.tree().size([height - 60, width - 400]); // 调整树的大小,以确保元素完全显示在 SVG 中

      const root = d3.hierarchy(data);
      tree(root);

      const link = svg
        .selectAll(".link")
        .data(root.links())
        .enter()
        .append("line")
        .attr("class", "link")
        .attr("x1", function (d) {
          return d.source.y;
        })
        .attr("y1", function (d) {
          return d.source.x;
        })
        .attr("x2", function (d) {
          return d.target.y;
        })
        .attr("y2", function (d) {
          return d.target.x;
        })
        .style("stroke", "black");

      const node = svg
        .selectAll(".node")
        .data(root.descendants())
        .enter()
        .append("g")
        .attr("class", "node")
        .attr("transform", (d) => `translate(${d.y},${d.x})`);

      node.append("circle").attr("r", 5);

      node
        .append("text")
        .attr("dy", "0.31em")
        .attr("x", (d) => (d.children ? -6 : 6))
        .style("text-anchor", (d) => (d.children ? "end" : "start"))
        .text((d) => d.data.name);
    </script>
  </body>
</html>

 



标签:node,const,attr,demo,Company,Sub,关系网,name
From: https://www.cnblogs.com/lijun12138/p/17987182

相关文章

  • 虹软sdk实现人脸识别小demo
    虹软官网:https://ai.arcsoft.com.cn注册后,下载适配的sdk注意提取下载的sdk中的jar包,代码中需要用到<dependency><groupId>com.arcsoft.face</groupId><artifactId>arcsoft-sdk-face</artifactId><version>3.0.0.0</version><scope&......
  • 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认
    今天运行项目的时候出现了这个错误....查了一下解决的方法。具体方案如下: 1、先确认安装IIS的时候有没有装Asp.Net,如果没安装的话,安装上即可。(XTHS:采用这步,就可以了!) 2、IIS采用了更安全的web.config管理机制,默认情况下会锁住配置项不允许更改。用超级管理员的身份执......
  • rocketmq--同步、异步、批量、事务消息demo
    在SpringBoot中使用RocketMQ进行同步和异步消息传输的关键是使用RocketMQTemplate类。下面是两个例子,分别演示了如何实现同步和异步消息传输。首先,确保你已经添加了RocketMQ的依赖到你的pom.xml中,如下所示:<dependency><groupId>org.apache.rocketmq</groupId><artifa......
  • rocketmq--消息顺序消费demo
    在RocketMQ中,要实现消息的顺序消费,你需要确保以下几点:发送消息时,相同业务顺序的消息应该发送到同一个队列(MessageQueue)。消费者在消费时,应该使用顺序消费的方式。下面是一个使用SpringBoot和RocketMQ实现消息顺序消费的例子。添加依赖(pom.xml):<dependencies><de......
  • rocketmq--两种消息模型的区别及demo
    RocketMQ主要支持两种消息模型:集群消费(Clustering)和广播消费(Broadcasting)。集群消费(Clustering):在集群消费模式下,同一个消费者组(ConsumerGroup)中的消费者实例平均分摊消费消息,即一个消息只会被消费者组中的一个消费者消费一次。这种模式适用于负载均衡场景,可以提高消费的并......
  • Flink Java Demo
    1.新建Maven项目<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://......
  • 【论文笔记#2】Farseg++:用于高空间分辨率遥感图像地理空间对象分割的前景感知关系网络
    论文来源IEEETransactionsonPatternAnalysisandMachineIntelligence作者ZhuoZheng;YanfeiZhong;JunjueWang等发表年代2023使用方法多分支金字塔编码、前景-场景关系、前景感知解码、前景感知优化期刊层次CCFA;计算机科学1区;IF23.6原文链接......
  • 自定义echarts绘制直方图,XY轴互调Demo
    1constcolorList=[2'#4f81bd',3'#c0504d',4'#9bbb59',5'#604a7b',6'#948a54',7'#e46c0b'8];9constdata=[10[10,16,3,'A'],11[16,18,15,&#......
  • Java使用modbus4j通过串口modbus-rtu协议 连接设备 demo
    前言项目中需要使用串口来连接操控烟雾报警器且只能使用modbus-rtu协议在找了一堆资料后终于成功了在此呈上代码和资料链接【ModBus】modbus之modbus4j的使用和流程原理解析(5)-CSDN博客使用modbus4j通过串口解析modbus协议(java)_javamodbus4j-CSDN博客 串口通讯需要使用modbus4j......
  • OPEN SQL取单条数据DEMO
      *&---------------------------------------------------------------------**&FormFRM_GET_INFO_EDH*&---------------------------------------------------------------------**text*-----------------------------------------------......