标签: networkx

将字符串传递给agraph.py中的老化.networkx和pygraphviz的问题

给出这个初始图:

import networkx as nx
G=nx.MultiGraph()
fromnodes=[0,0,1,1,1,1,1,2,3,4,5,5,5,7,8,9,10]
tonodes=[1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
dupedgeind=0
for x,y in zip(fromnodes,tonodes):
    if G.has_edge(x,y):
        dupedgeind=dupedgeind+1
        G.add_edge(x,y,key=dupedgeind)
    else:
        dupedgeind=0
        G.add_edge(x,y,key=dupedgeind)
Run Code Online (Sandbox Code Playgroud)

有人可以重新创建此错误吗?

pos=nx.nx_agraph.pygraphviz_layout(G,prog='sfdp')

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\networkx\drawing\nx_agraph.py", line 262, in pygraphviz_layout
    A=to_agraph(G)
  File "C:\Python27\lib\site-packages\networkx\drawing\nx_agraph.py", line 155, in to_agraph
    A.add_edge(u,v,key=str(key),**str_edgedata)
  File "C:\Python27\lib\site-packages\pygraphviz\agraph.py", line 484, in add_edge
    eh = gv.agedge(self.handle, uh, vh, key, _Action.find)
KeyError: 'agedge: no key'
Run Code Online (Sandbox Code Playgroud)

问题与调用graphviz的老化函数有关,它似乎与key参数的格式不一样; 当我改变时(第480行agraph.py):

...
    eh = gv.agedge(self.handle, uh, vh, key , _Action.create)
... …
Run Code Online (Sandbox Code Playgroud)

c python swig graphviz networkx

29
推荐指数
1
解决办法
1597
查看次数

用于大规模保持图的NoSQL解决方案

我迷上了使用Python和NetworkX来分析图形,因为我学到更多,我想使用越来越多的数据(猜测我正在变成一个数据迷:-).最终我认为我的NetworkX图形(存储为dict的dict)将超出我系统的内存.我知道我可能只是添加更多内存,但我想知道是否有办法将NetworkX与Hbase或类似解决方案集成?

我环顾四周,找不到任何东西,但我也找不到与允许简单的MySQL后端相关的任何东西.

这可能吗?是否存在允许连接到某种持久存储的任何东西?

谢谢!

更新:我记得在"社交网络分析初创公司"中看过这个主题,作者谈到了其他存储方法(包括hbase,s3等),但没有说明如何做到这一点或是否可行.

python graph-theory nosql networkx

28
推荐指数
2
解决办法
5773
查看次数

如何增加networkx.spring_layout的节点间距

绘制一个集团图

import networkx as nx
....
nx.draw(G, layout=nx.spring_layout(G))
Run Code Online (Sandbox Code Playgroud)

产生如下图:

在此输入图像描述

显然,需要增加节点之间的间隔(例如,边缘长度).我用谷歌搜索了这个,并在这里找到了这个建议:

对于某些布局算法,存在可能有帮助的"缩放"参数.例如

1中:将networkx导入为nx

2:G = nx.path_graph(4)

在[3]中:pos = nx.spring_layout(G)#default to scale = 1

在[4]中:nx.draw(G,pos)

在[5]中:pos = nx.spring_layout(G,scale = 2)#所有节点之间的双倍距离

在[6]中:nx.draw(G,pos)

但是,该scale参数似乎没有任何影响.

获得更好绘图的正确方法是什么?

python graph graph-drawing networkx

28
推荐指数
3
解决办法
2万
查看次数

什么可能导致NetworkX和PyGraphViz单独工作但不能一起工作?

我正在努力学习一些Python图形可视化.我发现了一些博客文章做了一些 我想尝试的事情.不幸的是我没有走得太远,遇到这个错误:AttributeError: 'module' object has no attribute 'graphviz_layout'

在我的系统上重现错误的最简单的代码片段是这样的,

In [1]: import networkx as nx
In [2]: G=nx.complete_graph(5)
In [3]: nx.draw_graphviz(G)
------------------------------------------------------------
AttributeError Traceback (most recent call last)
&lt;ipython-input-3-481ad1c1771c&gt; in &lt;module&gt;()
----&gt; 1 nx.draw_graphviz(G)
/usr/lib/python2.7/site-packages/networkx/drawing/nx_pylab.pyc in draw_graphviz(G, prog, **kwargs)
982 See networkx.draw_networkx() for a description of optional keywords.
983 """
--&gt; 984 pos = nx.drawing.graphviz_layout(G, prog)
985 draw(G, pos, **kwargs)
986
AttributeError: 'module' object has no attribute 'graphviz_layout'
Run Code Online (Sandbox Code Playgroud)

我发现了一个类似的问题,并且这个组合有困难的帖子,但不是完全相同的错误.一个接近 …

python graph graphviz networkx pygraphviz

28
推荐指数
1
解决办法
2万
查看次数

在NetworkX中绘制图形

我正在尝试在NetworkX中绘制任何图形,但什么都没有,甚至没有错误:

import networkx as nx
import matplotlib.pyplot as plt
g1=nx.petersen_graph()
nx.draw(g1)
Run Code Online (Sandbox Code Playgroud)

python matplotlib ipython networkx ipython-notebook

27
推荐指数
3
解决办法
1万
查看次数

如何在networkx python中设置节点的颜色?

我创建了我的图表,到目前为止一切看起来都很棒,但我希望在创建后更新节点的颜色.

我的目标是可视化DFS,我将首先显示初始图形,然后在DFS解决问题时逐步显示颜色节点.

谢谢

UPDATE

如果有人有兴趣,可以在Github上获得示例代码

python networkx

26
推荐指数
2
解决办法
3万
查看次数

如何在Python中重塑网络图?

因此,我创建了一种非常天真(可能效率低下)的生成哈希图的方法.

题:

我有4个维度... .p q r s

我想统一显示它(tesseract),但我不知道如何重塑它.如何在Python中重塑网络图?

我见过的人使用一些例子spring_layout()draw_circular(),但它不能在我要找的,因为他们不是统一的方式塑造.

有没有办法重塑我的图形并使其统一?(即将我的hasse图重塑为tesseract形状(最好使用nx.draw())

这是我目前的样子: 在此输入图像描述

这是我生成N维的哈希图的代码

#!/usr/bin/python

import networkx as nx
import matplotlib.pyplot as plt
import itertools

H = nx.DiGraph()

axis_labels = ['p','q','r','s']

D_len_node = {}

#Iterate through axis labels
for i in xrange(0,len(axis_labels)+1):
    #Create edge from empty set
    if i == 0:
        for ax in axis_labels:
            H.add_edge('O',ax)
    else:
        #Create all non-overlapping combinations
        combinations = [c for c in itertools.combinations(axis_labels,i)]
        D_len_node[i] = combinations
    #Create edge …
Run Code Online (Sandbox Code Playgroud)

python shape matplotlib nodes networkx

25
推荐指数
1
解决办法
1288
查看次数

如何使用Python计算网络的Eb(k)?

在题为" 度量相关性的缩放"及其对无标度网络中的扩散的影响的论文中,作者定义了$ E_b(k)$的数量来衡量度相关程度.

在此输入图像描述

在此输入图像描述

LK Gallos,C.Song和HA Makse,度量相关性的比例及其对无标度网络扩散的影响,物理学.莱特牧师.100,248701(2008).

您可以阅读此链接后的文章或阅读相关的Google图书.

在此输入图像描述

我的问题是如何使用Python计算网络的Eb(k)?我的问题是我无法重现作者的结果.我使用Condense Matter数据进行测试.Eb(k)的结果如上图所示.您可以看到我的图中的一个问题是Eb(k)远大于1!!我也尝试了互联网(作为级别数据)和WWW数据,问题仍然存在.毫无疑问,我的算法或代码存在严重问题.您可以重现我的结果,并将其与作者进行比较.您的解决方案或建议非常感谢.我将在下面介绍我的算法和python脚本.

我按照以下步骤操作:

  1. 对于每条边,找到k = k和k'> 3k的边.这些边缘的概率表示为P(k,k')
  2. 对于节点,要获得度数大于b*k的节点的比例,表示为p(k'),因此我们也可以得到k'*p(k')
  3. 得到分子P1:p1 =\sum P(k,k')/ k'*P(k')
  4. 得到分母p2:P2 =\sum P(k')
  5. Eb(k)= p1/p2

Python脚本

python脚本如下:

%matplotlib inline
import networkx as nx
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from collections import defaultdict

def ebks(g, b):
    edge_dict = defaultdict(lambda: defaultdict(int))
    degree_dict = defaultdict(int)
    edge_degree = [sorted(g.degree(e).values()) for e in g.edges()]
    for e in edge_degree:
        edge_dict[e[0]][e[-1]] +=1
    for i in g.degree().values(): …
Run Code Online (Sandbox Code Playgroud)

python algorithm social-networking correlation networkx

25
推荐指数
1
解决办法
463
查看次数

在networkx(Python)中获取DiGraph的根(头)

我试图networkx在项目中使用一些图形表示,我不知道如何做一些应该简单的事情.我创建了一个带有一堆节点和边的有向图,这样在这个图中只有一个根元素.现在,我想做的是从根开始,然后遍历每个元素的子元素并从中提取一些信息.我如何获得这个DiGraph的根元素?

所以它会是这样的:

#This is NOT real code, just pseudopython to convey the general intent of what I'd like to do

    root = myDiGraph.root()
    for child in root.children():
        iterateThroughChildren(child)

def iterateThroughChildren(parent):
    if parent.hasNoChildren(): return
    for child in parent.children():
        //do something
        //
        iterateThroughChildren(child)
Run Code Online (Sandbox Code Playgroud)

我没有在文档中看到任何提示检索DiGraph根的简单方法 - 我应该手动推断这个吗?:O我试着iter(myDiGraph)希望它会从根开始迭代,但顺序似乎是随机的......:\

将不胜感激,谢谢!

python directed-graph networkx

24
推荐指数
1
解决办法
9981
查看次数

具有特定位置的networkx add_node

我仍然是networkx的初学者我想在不同的位置添加多种类型的节点,我使用了以下代码

pos = {0: (40, 20), 1: (20, 30), 2: (40, 30), 3: (30, 10)} 
X=nx.Graph()
nx.draw_networkx_nodes(X,pos,node_size=3000,nodelist=[0,1,2,3],node_color='r')
Run Code Online (Sandbox Code Playgroud)

但是当我想访问Graph X时,如果我输入X.node它会返回一个空列表,如果我想添加更多节点,我必须使用pos字典在开头设置它们的位置.

如何使用add_node()将节点添加到特定位置x和y中的图形

python networkx

24
推荐指数
2
解决办法
3万
查看次数