javascript - D3 : Tree diagram with images and circles as nodes

标签 javascript image svg d3.js tree

我正在尝试重现 "tree diagram with images as nodes" .

但是,我不想让所有节点都带有图像,而是让一些节点带有图像,而另一些节点带有常规圆圈。

有什么想法吗?

我需要在这部分代码中更改什么吗:

nodeEnter.append("image")
  .attr("xlink:href", function(d) { return d.icon; })
  .attr("x", "-12px")
  .attr("y", "-12px")
  .attr("width", "24px")
  .attr("height", "24px");    

最佳答案

肯定有几种截然不同的方法可以实现您想要的。但是,我将只向您展示一种既简单又符合 d3 库精神的方法。


为了方便起见,我准备了你提到的例子的jsfiddle版本:

link to jsfiddle

enter image description here

(因为我无法从示例中找出图标的路径,所以我使用了一些我在互联网上找到的,并且我为它们使用了完整的互联网地址)


现在,让我们将其中两个这样的互联网图标路径更改为空字符串(表示应显示圆圈而不是图标),如以下代码所示:

  {
    "name": "Son of A",
    "parent": "Level 2: A",
    "value": 5,
    "type": "steelblue",
    "icon": "",
    "level": "orange"
  },

我们必须找到只选择包含图标空字符串的节点,并为它们添加圆圈的方法。这是通过以下代码完成的:

  nodeEnter.filter(function(d) {
            return (d.icon == "");
       })
      .append("circle")
      .attr("cx", "0px")
      .attr("cy", "0px")
      .attr("r", "12px");

就是这样!

link to jsfiddle

enter image description here

关于javascript - D3 : Tree diagram with images and circles as nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481108/

相关文章:

javascript - 绘制具有 2 个或 3 个彩色区域的密度函数?

javascript - 垃圾收集器破坏 WebGL 页面性能

javascript - 如何通过 web-ix 表单中的 onChange 验证每个元素

javascript - 将按钮追加到 2 类中

javascript - 如何调整 png 图像以适应 div?

Java swing改变JPanel图像

javascript - 实现 HTML5 存储 API

image - 如何将缩放的 SVG 渲染为 QImage?

javascript - 如何获得非重叠的圆形包装 d3 js 图表?

css - 将线性渐变转换为 CSS 背景