如何使用 reactjs 基于组在 d3 有向图中设置节点样式
How to style nodes in d3 directed graph based on groups using reactjs
我正在使用 d3 生成基于此示例的力导向图:Force-directed graph example in d3
我正在结合 React 实现它,其中 d3 强制有向图,reactjs 呈现可视化。
现在我想根据节点分配到的组设置节点的样式(颜色)。这是我的节点数据:
var nodes = [
{"name":"node1","group":"2"},
{"name":"node2","group":"4"},
{"name":"node3","group":"5"}]
在这个 example 中,他们实际上做了完全相同的事情,只是没有 reactjs。但是,我找不到任何明确的方法来结合 reactjs 来做到这一点。
理想的图形库,如 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);
然后您可以将此映射传递给负责创建有向图的组件,即在您的渲染方法中:
fill={color(d.group)}
这告诉填充属性从变量颜色的映射中获取填充,通过变量 d 查看每个节点。
我正在使用 d3 生成基于此示例的力导向图:Force-directed graph example in d3
我正在结合 React 实现它,其中 d3 强制有向图,reactjs 呈现可视化。
现在我想根据节点分配到的组设置节点的样式(颜色)。这是我的节点数据:
var nodes = [
{"name":"node1","group":"2"},
{"name":"node2","group":"4"},
{"name":"node3","group":"5"}]
在这个 example 中,他们实际上做了完全相同的事情,只是没有 reactjs。但是,我找不到任何明确的方法来结合 reactjs 来做到这一点。
理想的图形库,如 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);
然后您可以将此映射传递给负责创建有向图的组件,即在您的渲染方法中:
fill={color(d.group)}
这告诉填充属性从变量颜色的映射中获取填充,通过变量 d 查看每个节点。