Javascript 向d3树添加新节点

Javascript 向d3树添加新节点,javascript,svg,d3.js,Javascript,Svg,D3.js,我以这个示例为起点,在d3树数据结构方面取得了巨大的成功: 然而,有一个简单的任务我似乎找不到任何答案:向现有数据树添加节点。我不想改变数据来源的原始文件,也不想改变svg输出。我只是希望能够在从外部文件渲染节点后将其直接添加到数据树中非常简单,使用此代码动态创建一个新节点。此处的selected是具有当前选择的节点。它将是新节点的父节点 const newNodeObj = { id: id, name: [], attributes: [], childre

我以这个示例为起点,在d3树数据结构方面取得了巨大的成功:


然而,有一个简单的任务我似乎找不到任何答案:向现有数据树添加节点。我不想改变数据来源的原始文件,也不想改变svg输出。我只是希望能够在从外部文件渲染节点后将其直接添加到数据树中

非常简单,使用此代码动态创建一个新节点。此处的
selected
是具有当前选择的节点。它将是新节点的父节点

const newNodeObj = {
    id: id,
    name: [],
    attributes: [],
    children: []
  };
    newNodeObj.name = '';
    newNodeObj.id = id;

  const newNode = d3.hierarchy(newNodeObj);
  newNode.depth = selected.depth + 1; 
  newNode.height = selected.height - 1;
  newNode.parent = selected;
  newNode.id = id;

    if (!selected.children) {
      selected.children = [];
      selected.data.children = [];
    }
    selected.children.push(newNode);
    selected.data.children.push(newNode.data);

 updateChart(this.selected);

使用此代码动态创建新节点非常简单。此处的
selected
是具有当前选择的节点。它将是新节点的父节点

const newNodeObj = {
    id: id,
    name: [],
    attributes: [],
    children: []
  };
    newNodeObj.name = '';
    newNodeObj.id = id;

  const newNode = d3.hierarchy(newNodeObj);
  newNode.depth = selected.depth + 1; 
  newNode.height = selected.height - 1;
  newNode.parent = selected;
  newNode.id = id;

    if (!selected.children) {
      selected.children = [];
      selected.data.children = [];
    }
    selected.children.push(newNode);
    selected.data.children.push(newNode.data);

 updateChart(this.selected);

请参见如何确定新对象的位置(即vx、vy、x、y等)?这是我唯一无法理解的部分。你如何确定新对象的位置(即vx、vy、x、y等)?这是我唯一不能理解的部分。