0

我正在使用 d3 生成基于此示例的力有向图:Force-directed graph example in d3

我正在结合 React 来实现这个,其中 d3 强制有向图,reactjs 呈现可视化。

现在我想根据分配给它们的组来设置节点的样式(颜色)。这是我的节点数据:

var nodes = [
{"name":"node1","group":"2"},
{"name":"node2","group":"4"},
{"name":"node3","group":"5"}]

在这个例子中,除了没有 reactjs 之外,它们实际上做的是完全相同的事情。但是,我找不到与 reactjs 结合使用的任何明确方法。

4

1 回答 1

0

理想的图形库,如 d3.js,plotly.js 只需要布局和数据。单独节点的颜色分配是在内部完成的。但是,您可以这样做:

假设这是您的数据:

const nodes = [{
    "name": "Vertex 5",
    "group": "1"
  },
  {
    "name": "Vertex 9",
    "group": "4"
  },
  {
    "name": "Vertex 15",
    "group": "5"
  }
];

您需要使用 d3 api 在您的组和颜色之间创建映射。您可以通过将以下内容添加到创建节点的组件中来做到这一点:

var color = d3.scaleOrdinal(d3.schemeCategory10); 

然后,您可以将此映射传递给负责创建有向图的组件,即在您的情况下,在 render 方法中:

fill={color(d.group)}

这告诉填充属性从变量颜色的映射中获取填充,通过变量 d 查看每个节点。

于 2018-01-06T13:49:47.110 回答