【发布时间】:2020-02-25 12:55:30
【问题描述】:
所以我尝试在python上使用graphviz包,它有一个名为subgraph()的方法,但我认为它与网络理论中广泛使用的定义不同。
据我所知,子图是指一个图,其节点和边是另一个图的子集。
graphviz 用户指南上说:
将给定的唯一图形参数的当前内容添加为子图或返回上下文管理器,该上下文管理器返回使用给定(名称、注释等)参数创建的新图形实例,其内容在离开上下文管理器的 with 块时作为子图添加。
这是用户指南中的示例
import graphviz
p = Graph(name='parent')
p.edge('spam', 'eggs')
c = Graph(name='child', node_attr={'shape': 'box'})
c.edge('foo', 'bar')
p.subgraph(c)
根据网络理论,图 p 应该有所有节点 'spam'、'eggs'、'foo'、'bar' 并且子图 c 应该由图 p 中使用的节点和边组成。
但事实并非如此。似乎 subgraph() 方法只是将两个图合二为一。我说的对吗?
什么是特殊的簇子图? (如果子图的名称以“集群”开头,布局引擎会将其视为特殊的集群子图)。我在谷歌上找不到任何结果。
谢谢
【问题讨论】:
标签: python network-programming networkx graphviz pygraphviz