草庐IT

NetworkX

全部标签

python - 如何使用用户定义的类对象作为 networkx 节点?

类点定义为(里面还有一些方法、属性等,但这是最小的部分):classpoint():def___init___(self,x,y):self.x=xself.y=y所以,我看到了thisquestion,但是当我尝试应用它时,它返回一个错误:G=nx.Graph()p=point(0,0)G.add_node(0,p)NetworkXError:attr_dict参数必须是字典。如果我用G=nx.Graph()p=point(0,0)G.add_node(0,data=p)我没有收到错误,但是当我尝试访问x坐标时,结果发现它没有将其保存为一个点。G[0].x返回:AttributeEr

python - 如何列出 networkx 中的特定节点/边缘?

假设networkx图中有一个树状结构:n-----n1----n11||----n12||----n13||----n131|----n2|||-----n21X||-----n22|||----n221|----n3n4------n41n5如何列出所有具有“子节点”及其深度的节点,这里是:n,n1,n13,n2,n22,n4如何列出没有“子节点”的所有节点,这里是:n11,n12,n21,n41,n5如何列出孤儿节点,这里是:n5以及如何列出“孤儿”边,不属于根n边,这里是n4-n41,如何列出超过2个“子节点”的节点,这里是n,n1节点遍历中n131,n221有边存在怎么处理,

python - 如何使用 networkx 从给定图中提取所有可能的诱导子图

我想知道是否可以使用networkx从输入的大图中提取子图中具有特定节点数的所有可能的诱导子图(graphlet),或者是否有另一个包可以完成这项工作?例如,如果我有一个大图,它以networkx邻接表格式说明,图G:123721431465423553466357716看起来像如果我想提取具有3个节点的graphlet,算法应该返回我子图1:1232131[(1,2),(1,3)]子图2:1373171[(1,3),(1,7)]子图3:345435534[(3,4),(3,5),(4,5)]子图4、子图5、子图6...以下是@Hooked提示的题目代码。假设n=3importiter

python - 获取 NetworkX 图中的连接节点

直截了当的问题:我想检索连接到NetworkX图中给定节点的所有节点,以便创建子图。在下面显示的示例中,我只想提取圆圈内的所有节点,给出其中任何一个的名称。我尝试了以下递归函数,但达到了Python的递归限制,即使该网络中只有91个节点。无论下面的代码是否有错误,实现我想要实现的目标的最佳方法是什么?我将在各种大小的图上运行此代码,并且事先不知道最大递归深度是多少。deffetch_connected_nodes(node,neighbors_list):forneighborinassembly.neighbors(node):print(neighbor)iflen(assembl

python - 对 networkx 图形对象 Python 进行排序

我想按照边缘权重的递增顺序对我通过Python中的networkx库读取的图形对象进行排序。python的sort命令似乎不适用于图形对象。我确信有一种简单的方法可以对这个对象进行排序,但我不确定如何排序。任何帮助将不胜感激。比如我的前三个边是1352501474153659排序后我希望他们的顺序改为1474153659135250到目前为止,这是我的代码importnetworkxasnxg=nx.read_weighted_edgelist(fname,nodetype=int)我正在尝试对对象g进行排序。 最佳答案 impor

python - 使用 NetworkX 在集群中对顶点进行分组

我正在尝试以图形方式表示一些图形,我需要将一些具有共同特征的节点分组到集群中。我正在使用NetworkX,我需要对来自thistutorial的图表做一些类似的事情,来自幻灯片44,左图。我想在每个集群周围画一些分界线。我当前的代码是这样的:vec=self.colorscolors=(linspace(0,1,len(set(vec)))*20+10)nx.draw_circular(g,node_color=array([colors[x]forxinvec]))show()我想找一个例子,看看如何使用networkx对图进行聚类。 最佳答案

python - Networkx read_gml 错误 "networkx.exception.NetworkXError: cannot tokenize u' 图在 (3, 1)”

我正在尝试使用networkx读取gml文件(很简单吧?),除非我尝试读取文件时出现错误“networkx.exception.NetworkXError:cannottokenizeu'graph'at(3,1)"我对gml或networkx不太熟悉,所以我无法自己诊断问题。更奇怪的是,我的同事将使用完全相同的文件运行完全相同的命令,而且它会毫无错误地执行。此时我已经多次卸载并重新安装networkx,任何人都可以帮助确定错误可能来自什么?importnetworkxasnxg=nx.read_gml('disciplineNetwork.gml')追溯(最近的调用最后):File"

python - networkx/igraph (Python) 上的指定边长

我想用我拥有的数据可视化一个网络,并想用特定的边长来绘制它们。我使用Python,我尝试过networkx和igraph来绘制,但似乎都分配了固定的边长。a.)我想知道我是不是代码写错了,或者这些包真的没有能力。您如何为networkx或igraph正确实现指定的边长?b.)如果networkx和igraph做不到,您可以推荐什么包?(最好能承载8万个节点以上。)谢谢! 最佳答案 这应该有效:importnetworkxasNXimportpygraphvizasPGG=PG.AGraph()nlist="ABCDE".split(

python - 二分图所有可能的最大匹配

我正在使用networkx找到maximumcardinalitymatching的二分图。匹配的边对于特定图不是唯一的。有没有办法找到所有的最大匹配?对于下面的例子,下面的所有边都可以是最大匹配:{1:2,2:1}或{1:3,3:1}或{1:4,4:1}importnetworkxasnximportmatplotlib.pyplotaspltG=nx.MultiDiGraph()edges=[(1,3),(1,4),(1,2)]nx.is_bipartite(G)Truenx.draw(G,with_labels=True)plt.show()不幸的是,nx.bipartite.m

python - 根据程度对图节点进行排序

我在networkx中有一个图G,想根据节点的度对节点进行排序。但是,以下代码在最新的networkx版本中不起作用:sorted(set(G.degree().values()))下面看起来有点笨拙,因为它需要将networkxDegreeView转换为元组的python列表degrees=[(node,val)for(node,val)inG.degree()]sorted(degrees,key=lambdax:x[1],reverse=True)有没有更好的办法? 最佳答案 以下作品:sorted(G.degree,key=