标签: networkx

Networkx:pagerank,pagerank_numpy和pagerank_scipy之间的区别?

有谁知道Networkx中三种不同的pagerank功能之间的准确性差异?

我有一个1000个节点和139732个边缘的图形,"普通" pagerank函数似乎根本不起作用 - 除了两个节点之外都有相同的PG,所以我假设这个函数不起作用以及大型图表?

pagerank_numpy价值观似乎也比pagerank_scipy价值观更加分散.该函数的文档说"这对于小图表来说是最快和最准确的".什么是"小"图?

另外,为什么pagerank_numpy不允许max_itertol参数?

python numpy pagerank scipy networkx

13
推荐指数
1
解决办法
4605
查看次数

Networkx中的社区检测

我正在研究网络中的检测社区.

我用的是igraph和Python

对于模块化度量方面的最佳社区数量:

from igraph import *
karate = Nexus.get("karate")
cl = karate.community_fastgreedy()
cl.as_clustering().membership
Run Code Online (Sandbox Code Playgroud)

为供应所需数量的社区:

from igraph import *
karate = Nexus.get("karate")
cl = karate.community_fastgreedy()
k=2
cl.as_clustering(k).membership
Run Code Online (Sandbox Code Playgroud)

但是,我喜欢使用networkx这样做.我知道在模块化度量方面获得最佳社区数量:

import community # --> http://perso.crans.org/aynaud/communities/
import fastcommunity as fg # --> https://networkx.lanl.gov/trac/ticket/245
import networkx as nx

g = nx.karate_club_graph()
partition = community.best_partition(g)
print "Louvain Modularity: ", community.modularity(partition, g)
print "Louvain Partition: ", partition

cl = fg.communityStructureNewman(g)
print "Fastgreed Modularity: ", cl[0]
print "Fastgreed Partition: ", cl[1]
Run Code Online (Sandbox Code Playgroud)

但我无法获得所需数量的社区.使用Networkx有一些算法吗?

python modularity igraph networkx

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

AttributeError:模块“matplotlib.cbook”没有属性“iterable”

当我运行这段代码时:

import networkx as nx

G = nx.complete_graph(5)

nx.draw_networkx(G)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:AttributeError: module 'matplotlib.cbook' has no attribute 'iterable'

我怎样才能摆脱这个错误?谢谢你。

PS 我在云端运行该代码,而不是在我的笔记本电脑上。

python matplotlib networkx

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

Python,networkx

我需要帮助,因为我不是编程方面的专家.

对于具有n个节点和E边缘的给定图形,如何绘制平面图形(如果图形可以在平面中绘制,使得没有边缘交叉,则称为平面图形).然后翻转边缘以获得另一个平面图.(循环直到我们获得所有可能性).

在此先感谢,我感谢您的帮助.

PY


>>>#visualize with pygraphviz
    A=pgv.AGraph()
    File "<stdin>", line 6
    A=pgv.AGraph()
    ^
    SyntaxError: invalid syntax
>>> A.add_edges_from(G.edges())
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'A' is not defined
>>> A.layout(prog='dot')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'A' is not defined
>>> A.draw('planar.png')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'A' is not defined
Run Code Online (Sandbox Code Playgroud)

python graph networkx

12
推荐指数
1
解决办法
7166
查看次数

Networkx:可视化MultiGraph时重叠边缘

使用graphviz neato正确绘制以下多图(即平行边不重叠)以生成png(如本答案所示)

import networkx as nx
nx.MultiGraph ([(1,2),(1,2),(1,2),(3,1),(3,2)])
nx.write_dot(Gm,'multi.dot')
!neato -T png multi.dot > multi.png
Run Code Online (Sandbox Code Playgroud)

但是,使用Networkx的绘图功能并不能解决问题

nx.draw_graphviz(Gm,prog='neato')
Run Code Online (Sandbox Code Playgroud)

是否可以使用Networkx的draw方法防止重叠边缘?

谢谢

python matplotlib graphviz networkx python-2.7

12
推荐指数
2
解决办法
4689
查看次数

如何使用networkx计算"附近"节点

我在这里寻找的可能是一个内置函数networkx,并有一个数学名称 - 如果是这样,我想知道它是什么!看起来谷歌很难实现.

给定一个图形G和一个起始节点i,我想找到所有节点"在P边缘内" 的子图i- 即那些i通过小于P边的路径连接的节点.

我的实施草案是:

import networkx as nx

N = 30
G = nx.Graph()

# populate the graph...
G.add_cycle(range(N))

# the starting node:
i = 15

# the 'distance' limit:
P = 4

neighborhood = [i]
new_neighbors = [i]
depth = 0

while depth < P:
    new_neighbors = list(set(sum([
        [k for k in G[j].keys() if k not in neighborhood]
    for j in new_neighbors], …
Run Code Online (Sandbox Code Playgroud)

python math networkx

12
推荐指数
2
解决办法
4288
查看次数

networkx和igraph之间的接口

我一直在使用networkx已经有一段时间了,直到最近我开始研究社区检测时,它一直很好地服务于我的目的.相比之下,igraph Python包似乎有更广泛的社区检测方法实现(甚至与添加了Thomas Aynaud社区包的networkx相比).我只是想知道是否有任何现有的,经过测试的API可以轻松地将networkx图转换为igraph结构,所以我可以利用这个领域提供的功率igraph?

非常感谢您的回答.

python igraph networkx

12
推荐指数
3
解决办法
6557
查看次数

如何检查两个节点是否连接?

我有一个NetworkX图,(a,b,c,d)其中有四个部分连接的节点.如何检查两个节点是否相邻?例如:我怎么能断言a并且d不相邻?

import networkx as nx
G=nx.Graph()
G.add_edge('a','b',weight=1)
G.add_edge('a','c',weight=1)
G.add_edge('c','d',weight=1)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下,但失败了:

nx.is_connected(G) # I assume it checks whether edges are connected at all
nx.connected_components(G) # outputs an object that I can make no use of
Run Code Online (Sandbox Code Playgroud)

python graph networkx

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

从DataFrame到NetworkX加载具有属性和边的节点

我是使用Python处理图形的新手:NetworkX.到现在为止我使用过Gephi.标准步骤(但不是唯一可行的)是:

  1. 从表/电子表格加载节点信息; 其中一列应该是ID,其余的是关于节点的元数据(节点是人,因此性别,组...通常用于着色).喜欢:

    id;NormalizedName;Gender
    per1;Jesús;male
    per2;Abraham;male
    per3;Isaac;male
    per4;Jacob;male
    per5;Judá;male
    per6;Tamar;female
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后从表/电子表格加载边缘,使用与节点电子表格的列ID中的节点相同的名称,通常有四列(目标,来源,重量和类型):

    Target;Source;Weight;Type
    per1;per2;3;Undirected
    per3;per4;2;Undirected
    ...
    
    Run Code Online (Sandbox Code Playgroud)

这是我拥有的两个数据帧,我想用Python加载它们.阅读关于NetworkX,似乎不太可能将两个表(一个用于节点,一个用于边缘)加载到同一个图表中,我不确定最好的方法是什么:

  1. 我应该仅使用DataFrame中的节点信息创建图形,然后添加(追加)来自其他DataFrame的边缘吗?如果是这样,并且因为nx.from_pandas_dataframe()需要有关边的信息,我想我不应该用它来创建节点......我应该只是将信息作为列表传递?

  2. 我是否应该仅使用DataFrame中的边信息创建图形,然后将来自其他DataFrame的信息作为属性添加到每个节点?有没有比迭代DataFrame和节点更好的方法呢?

python graph networkx pandas

12
推荐指数
3
解决办法
9797
查看次数

将节点标签添加到散景网络图中

我使用以下代码生成交互式散景网络图.如何将节点名称添加到散景图中的节点?

from bokeh.io import show, output_notebook
from bokeh.models import Plot, Range1d, MultiLine, Circle, HoverTool, TapTool, BoxSelectTool
from bokeh.models.graphs import from_networkx, NodesAndLinkedEdges, EdgesAndLinkedNodes
from bokeh.palettes import Spectral4
from bokeh.models import LabelSet

plot = Plot(plot_width=900, plot_height=500,
            x_range=Range1d(-1.1,1.1), y_range=Range1d(-1.1,1.1))
plot.title.text = "Graph Interaction Demonstration"

plot.add_tools(HoverTool(tooltips=None), TapTool(), BoxSelectTool())

graph_renderer = from_networkx(G, nx.circular_layout, scale=1, center=(0,0))

graph_renderer.node_renderer.glyph = Circle(size=15, fill_color=Spectral4[0])
graph_renderer.node_renderer.selection_glyph = Circle(size=15, fill_color=Spectral4[2])
graph_renderer.node_renderer.hover_glyph = Circle(size=15, fill_color=Spectral4[1])
graph_renderer.node_renderer.glyph.properties_with_values()
graph_renderer.edge_renderer.glyph = MultiLine(line_color="#CCCCCC", line_alpha=0.8, line_width=5)
graph_renderer.edge_renderer.selection_glyph = MultiLine(line_color=Spectral4[2], line_width=5)
graph_renderer.edge_renderer.hover_glyph = MultiLine(line_color=Spectral4[1], line_width=5)

graph_renderer.selection_policy = NodesAndLinkedEdges()
graph_renderer.inspection_policy …
Run Code Online (Sandbox Code Playgroud)

python networkx bokeh

12
推荐指数
3
解决办法
3919
查看次数