我正在尝试使用 d3py 可视化从 networkx 生成的图形。 我使用了提供的示例 ( https://github.com/mikedewar/d3py/blob/master/examples/d3py_graph.py ),但我得到的只是没有节点名称的图形,我该如何绘制节点名称?
另外,如何更改边和节点的颜色?
请您参考如下方法:
这是部分答案,但也请阅读最后的警告。
最简单的事情是改变节点颜色。如果你运行你指向的例子
with d3py.NetworkXFigure(G, width=500, height=500) as p:
p += d3py.ForceLayout()
p.css['.node'] = {'fill': 'blue', 'stroke': 'magenta'}
p.show()
然后您将拥有带有洋红色轮廓的蓝色节点(您可以使用您喜欢的任何 html 颜色)。
对于边缘颜色,在文件 d3py/geoms/graph.py 中有一个硬编码的 stroke: black;。您可以将其注释掉并重新安装d3py
line = {
"stroke-width": "1px",
"stroke": "black",
}
self.css[".link"] = line
然后你可以指定边缘颜色和宽度如下:
with d3py.NetworkXFigure(G, width=500, height=500) as p:
p += d3py.ForceLayout()
p.css['.node'] = {'fill': 'blue', 'stroke': 'magenta'}
p.css['.link'] = {'stroke': 'red', 'stoke-width': '3px'}
p.show()
似乎没有任何方法可以使用 d3py 轻松添加节点标签。仅使用 d3.js,它可以相对容易地完成(参见 this example)。这让我们想到了一个重要的警告......
警告
正如@flup 已经提到的,d3py 似乎并不真正成熟(他们的 Github 存储库中的代码甚至没有运行 NetworkX 示例,networkx_figure.py 中缺少一个 )。几个月以来 repo 中没有任何事件,所以我猜这个项目可能被放弃了。直接使用 d3.js 可能会更轻松地实现您的目标。host 参数
