sve*_*erg 5 python subgraph networkx
我想按节点获取一个子图(红色区域):子图由从输入节点可到达的所有节点组成。
像G.subgraph(3)从红色区域返回一个新的DiGraph。
例如,我创建一个DiGraph如下:
import networkx as nx
G = nx.DiGraph()
G.add_path([1,2,3,4])
G.add_path([3,'a','b'])
A = nx.to_agraph(G)
A.layout()
A.draw('graph.png')
Run Code Online (Sandbox Code Playgroud)
我查看了https://networkx.github.io/documentation/latest/reference/generation/networkx.Graph.subgraph.html并将其转换为单向。我测试了out_egdes,strong / weak_connected_component,但从未成功。我还查看了如何在有向图中查找子图而不转换为无向图?和Networkx:提取包含给定节点的有向组件(有向图)。
我知道Subgraph在DiGraph中不起作用。
有人可以告诉我该怎么做吗?如果结果图也是DiGraph会很好
根据我的理解,子图的创建标准取决于从输入节点可到达的节点。那么下面的递归函数应该足以完成工作。
def create_subgraph(G,sub_G,start_node):
for n in G.successors_iter(start_node):
sub_G.add_path([start_node,n])
create_subgraph(G,sub_G,n)
Run Code Online (Sandbox Code Playgroud)
我复制了您的代码来创建图形,初始化一个空的有向图并按如下方式调用该函数:
G = nx.DiGraph()
G.add_path([1,2,3,4])
G.add_path([3,'a','b'])
sub_G = nx.DiGraph()
create_subgraph(G, sub_G,3)
Run Code Online (Sandbox Code Playgroud)
详细阐述 @vaettchen 对How to extract a subgraph from a dot file的神秘评论
从https://gist.github.com/blabber/74b8d9ed59d0b2ad0d7a734113996424#file-reduce-g获取gvpr命令文件reduce.g
运行:gvprreduce.g
gvpr -f reduce.g -a '"3" 10' mygraph.dot > myreduced.graph.dot
其中-a是程序的参数reduce.g,即目标节点=3 和要遵循的跳数。如果您跳过它,-a它会告诉您相关信息。
This script takes exactly two parameter. 1: name of node, 2: number of hops
现在,就目前情况而言,reduce.g图表似乎确实发生了很大的变化——我从水平方向切换到了垂直方向。
顺便说一句,由于将参数输入bash脚本中的引号让我很困惑,所以我添加了有效的内容。
gvpr -f reduce.g -a " \"$node_to_select\" 10" mygraph.dot
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |