矩阵对象没有属性节点networkX python

矩阵对象没有属性节点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

我试图将一些数字表示为带有连通分量的图的边。为此,我一直在使用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 = 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后得到了。棒棒糖图只是一个图形生成器,我不知道你想构建什么图形,但我想这会演示它是如何工作的,以及它是如何显示的。如果我的答案完全解决了你的问题,那么请接受它,答案左上角将有一个空的勾号,谢谢