矩阵对象没有属性节点networkX python
我试图将一些数字表示为带有连通分量的图的边。为此,我一直在使用python的networkX模块。矩阵对象没有属性节点networkX python,python,networkx,Python,Networkx,我试图将一些数字表示为带有连通分量的图的边。为此,我一直在使用python的networkX模块。 我的图是G,其节点和边初始化如下: G = nx.Graph() for (x,y) in my_set: G.add_edge(x,y) print G.nodes() #This prints all the nodes print G.edges() #Prints all the edges as tuples adj_matrix
我的图是G,其节点和边初始化如下:
G = nx.Graph()
for (x,y) in my_set:
G.add_edge(x,y)
print G.nodes() #This prints all the nodes
print G.edges() #Prints all the edges as tuples
adj_matrix = nx.to_numpy_matrix(G)
一旦我添加了以下行
pos = nx.spring_layout(adj_matrix)
我得到了上面提到的错误。
如果可能有用,则所有节点都以9-15位数字进行编号。有412个节点和422条边
详细错误:
File "pyjson.py", line 89, in <module>
mainevent()
File "pyjson.py", line 60, in mainevent
pos = nx.spring_layout(adj_matrix)
File "/usr/local/lib/python2.7/dist-packages/networkx/drawing/layout.py", line 244, in fruchterman_reingold_layout
A=nx.to_numpy_matrix(G,weight=weight)
File "/usr/local/lib/python2.7/dist-packages/networkx/convert_matrix.py", line 128, in to_numpy_matrix
nodelist = G.nodes()
AttributeError: 'matrix' object has no attribute 'nodes'
文件“pyjson.py”,第89行,在
mainevent()
mainevent中第60行的文件“pyjson.py”
位置=nx.弹簧布局(调整矩阵)
fruchterman\u reingold\u布局中的文件“/usr/local/lib/python2.7/dist packages/networkx/drawing/layout.py”,第244行
A=nx.到numpy矩阵(G,权重=权重)
文件“/usr/local/lib/python2.7/dist packages/networkx/convert_matrix.py”,第128行,在to_numpy_矩阵中
nodelist=G.nodes()
AttributeError:“矩阵”对象没有属性“节点”
编辑:在下面解决。有用信息:pos为每个节点创建带有坐标的dict。执行nx.draw(G,pos)会创建一个pylab图形。但它不会显示它,因为pylab不会自动显示。将网络图作为第一个参数,而不是numpy数组。根据Fruchterman-Reingold力定向算法,它返回的是节点的位置
import networkx as nx
import pylab as py
G = nx.Graph()
for (x,y) in my_set:
G.add_edge(x,y)
print G.nodes() #This prints all the nodes
print G.edges() #Prints all the edges as tuples
pos = nx.spring_layout(G)
nx.draw(G,pos)
py.show() # or py.savefig('graph.pdf') if you want to create a pdf,
# similarly for png or other file types
因此,您需要将其传递给draw
示例:
import networkx as nx
%matplotlib inline
G=nx.lollipop_graph(14, 3)
nx.draw(G,nx.spring_layout(G))
收益率:
(此答案中的一些内容涉及到您评论中的一些内容。您能否将这些内容添加到您的问题中,以便以后的用户获得更多的上下文信息)
pos
为每个节点创建带有坐标的dict。执行nx.draw(G,pos)
会创建一个pylab图形。但它不会显示它,因为pylab不会自动显示
import networkx as nx
import pylab as py
G = nx.Graph()
for (x,y) in my_set:
G.add_edge(x,y)
print G.nodes() #This prints all the nodes
print G.edges() #Prints all the edges as tuples
pos = nx.spring_layout(G)
nx.draw(G,pos)
py.show() # or py.savefig('graph.pdf') if you want to create a pdf,
# similarly for png or other file types
最后的
py.show()
将显示它py.savefig('filename.extension')
将根据您用于扩展的内容另存为多种文件类型中的任意一种
不清楚您在这里尝试的是将图形作为第一个参数,而不是矩阵array@EdChum:我不知道,谢谢。我如何才能真正让绘图显示出来?nx.draw(G)不会抛出任何错误,但它也不会出现。sprint_布局
返回节点位置,您需要将其传递给nx.draw
以便nx.draw(G,nx.spring_布局(G))
可以工作,我可以发布一个示例如果我的答案解决了您的问题,请接受答案,在我的答案的左上角会有一个空的勾号,你也可以试试这个,我需要包括nx.lollipop_图部分吗?虽然没有抛出错误,但我的程序实际上并没有显示带有此选项的图形。编辑:我添加了一个show后得到了。棒棒糖图只是一个图形生成器,我不知道你想构建什么图形,但我想这会演示它是如何工作的,以及它是如何显示的。如果我的答案完全解决了你的问题,那么请接受它,答案左上角将有一个空的勾号,谢谢