如何使用networkx和d3py绘制图形

etz*_*rid 1 python graph networkx d3.js d3py

我正在尝试使用d3py可视化从networkx生成的图形.我使用了提供的示例(https://github.com/mikedewar/d3py/blob/master/examples/d3py_graph.py),但我得到的是没有节点名称的图表,我如何绘制节点名称?

另外,如何更改边缘和节点颜色?

Loï*_*-C. 5

这是一个部分答案,但也在最后阅读警告.

最简单的方法是更改​​节点颜色.如果您运行您指向的示例

with d3py.NetworkXFigure(G, width=500, height=500) as p:
    p += d3py.ForceLayout()
    p.css['.node'] = {'fill': 'blue', 'stroke': 'magenta'}
    p.show()
Run Code Online (Sandbox Code Playgroud)

那么你将拥有洋红色轮廓的蓝色节点(你可以使用你喜欢的任何html颜色).

对于边缘颜色,stroke: black;文件中有硬编码d3py/geoms/graph.py.您可以将其注释掉并重新安装d3py

line = {
    "stroke-width": "1px",
     "stroke": "black",
}
self.css[".link"] = line
Run Code Online (Sandbox Code Playgroud)

然后您可以指定边缘颜色和宽度,如下所示:

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()
Run Code Online (Sandbox Code Playgroud)

似乎没有任何方法可以使用d3py轻松添加节点标签.使用d3.js,可以相对容易地完成(参见本例).这引出了我们的主要警告......

警告

正如@flup已经提到的那样,d3py似乎并不真正成熟(来自他们的Github存储库的代码甚至没有运行NetworkX示例,其中有一个缺少的host参数networkx_figure.py).自几个月以来,回购中没有任何活动,所以我猜这个项目可能已经放弃了.您可以直接使用d3.js更轻松地达到目标.