我正在使用 d3.js 强制导向布局进行交互式图形可视化。我希望用户能够通过逐个单击来选择节点集。我有一组计算,我将允许用户在选定的集合上执行。例如,用户可以选择两个不同的节点,然后要求系统计算它们之间的最短路径(如果有的话)。
所以,问题是如何表示选定的节点集,以便我可以 (a) 允许用户从集合中添加和删除节点,(b) 可视化选定的节点(例如,通过突出显示它们),以及 (c ) 在节点上执行计算。
我看到一些不同的选项在 d3 管道的不同点起作用。
一种是在数据本身上有一个标志,指示是否选择了一个节点。突出显示节点很容易:各种样式和属性函数查看 d.selected 标志。不过,我不确定处理选择和取消选择节点的最佳策略是什么。我是否设置数据值,然后重新运行整个 d3.selectAll.data.enter.. 混乱?
另一种选择是保留一个单独的选定节点数组作为全局变量。这使得查找节点集变得容易。要实现突出显示样式/属性函数,将查看给定节点是否在集合中。同样,我不确定在从集合中添加或删除节点时如何更改可视化。
最后一个选项是在单击每个节点时立即更改每个节点的样式/属性。但是,我如何确定选定节点的集合?
任何建议将不胜感激!