标签: networkx

节点大小取决于NetworkX上的节点级别

我以.json文件的形式将我的Facebook数据导入到我的计算机上.数据格式如下:

{"nodes":[{"name":"Alan"},{"name":"Bob"}],"links":[{"source":0,"target:1"}]}
Run Code Online (Sandbox Code Playgroud)

然后,我使用这个功能:

def parse_graph(filename):
"""
Returns networkx graph object of facebook
social network in json format
"""
G = nx.Graph()
json_data=open(filename)
data = json.load(json_data)
# The nodes represent the names of the respective people
# See networkx documentation for information on add_* functions
G.add_nodes_from([n['name'] for n in data['nodes']])
G.add_edges_from([(data['nodes'][e['source']]['name'],data['nodes'][e['target']]['name']) for e in data['links']])
json_data.close()
return G
Run Code Online (Sandbox Code Playgroud)

使这个.json文件在NetworkX上使用图形.如果我找到节点的程度,我知道如何使用的唯一方法是:

degree = nx.degree(p)
Run Code Online (Sandbox Code Playgroud)

其中p是我所有朋友的图表.现在,我想绘制图形,使得节点的大小与该节点的程度相同.我该怎么做呢?

使用:

nx.draw(G,node_size=degree)
Run Code Online (Sandbox Code Playgroud)

没有工作,我想不出另一种方法.

python social-networking networkx python-2.7

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

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

如何使用matplotlib或graphviz在networkx中绘制多图

当我将multigraph numpy邻接矩阵传递给networkx(使用from_numpy_matrix函数),然后尝试使用matplotlib绘制图形时,它会忽略多个边缘.

我怎么能让它画出多个边缘呢?

networkx python-2.7

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

Networkx:如何在图形绘制中显示节点和边缘属性

我有一个图G,节点和边的属性'state'.我想绘制图形,标记所有节点,并在相应的边/节点外标记状态.

for v in G.nodes():     
    G.node[v]['state']='X'
G.node[1]['state']='Y' 
G.node[2]['state']='Y'

for n in G.edges_iter():    
    G.edge[n[0]][n[1]]['state']='X'
G.edge[2][3]['state']='Y'
Run Code Online (Sandbox Code Playgroud)

命令draw.networkx有一个标签选项,但我不明白如何将该属性作为标签提供给此命令.有人可以帮帮我吗?

python graphviz networkx

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

NetworkX(Python):如何通过指定规则更改边的权重

我有一个加权图:

F=nx.path_graph(10)
G=nx.Graph()
for (u, v) in F.edges():
    G.add_edge(u,v,weight=1)
Run Code Online (Sandbox Code Playgroud)

获取节点列表:

[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
Run Code Online (Sandbox Code Playgroud)

我想通过这条规则改变每条边的重量:

删除一个节点,如节点5,清除,edge(4,5)和(5,6)将被删除,每个边的权重将变为:

{#这些边缘位于删除的边缘(4,5)和(5,6)附近

(3,4): '重量'= 1.1,

(6,7): '重量'= 1.1,

#these边缘位于上述边缘附近

(2,3): '重量'= 1.2,

(7,8): '重量'= 1.2,

#these边缘位于上述边缘附近

(1,2): '重量'= 1.3,

(8,9): '重量'= 1.3,

#这边是附近的(1,2)

(0,1): '重量'= 1.4}

怎么写这个算法?

PS:path_graph只是一个例子.我需要一个适合任何图表类型的程序.此外,程序需要是可迭代的,这意味着我每次都可以从原始图中删除一个节点.

问候

python algorithm networkx edge-list

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

NetworkX节点属性绘制

我使用networkx进行可视化.我看到当我使用draw_networkx_edge_labels函数时,我可以检索边缘的标签.

我想在节点上打印属性(而不是标签)..几乎尝试一切.仍然卡住了.如果我每个节点有5个属性,那么我是否可以在每个节点上打印特定属性?例如,如果汽车节点具有属性:大小,价格,公司,..我想在每个节点上打印汽车的大小?

不知道是否可以在图表上输出.

attributes draw networkx

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

根据networkx重复边缘更新权重信息

我有一个JSON提要数据,其中包含许多用户关系,例如:

"subject_id = 1, object_id = 2, object = added 
subject_id = 1, object_id = 2, object = liked
subject_id = 1, object_id = 3, object = added
subject_id = 2, object_id = 1, object = added"
Run Code Online (Sandbox Code Playgroud)

现在我使用以下代码将JSON转换为networkx Graph:

def load(fname):
G = nx.DiGraph()
d = simplejson.load(open(fname))
for item in d:
    for attribute, value in item.iteritems():
        G.add_edge(value['subject_id'],value['object_id'])
return G
Run Code Online (Sandbox Code Playgroud)

结果如下:

[('12820', '80842'), ('12820', '81312'), ('12820', '81311'), ('13317', '29'), ('12144', '81169'), ('13140', '16687'), ('13140', '79092'), ('13140', '78384'), ('13140', '48715'), ('13140', '54151'), …
Run Code Online (Sandbox Code Playgroud)

python duplicates edges networkx

16
推荐指数
1
解决办法
9132
查看次数

Networkx:提取包含给定节点的连通组件(有向图)

我试图从一个大图中提取包含特定节点的所有连接节点的子图.

Networkx库中是否有解决方案?

[编辑]
我的图是DiGraph

[编辑]
简单地改写:
我想包含我的特定节点n_i个和与所有连接直接或间接地使用任何传入或outcoming边缘(由其它节点传递)的节点我的曲线图的一部分.
例:

>>> g = nx.DiGraph()
>>> g.add_path(['A','B','C',])
>>> g.add_path(['X','Y','Z',])
>>> g.edges()
[('A', 'B'), ('B', 'C'), ('Y', 'Z'), ('X', 'Y')]
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

>>> g2 = getSubGraph(g, 'B')
>>> g2.nodes()
['A', 'B', 'C']
>>> g2.edges()
[('A', 'B'), ('B', 'C')]
Run Code Online (Sandbox Code Playgroud)

python networkx

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

如何使用`networkx`中的`pos`参数创建流程图风格的Graph?(Python 3)

我正在尝试创建一个线性网络图Python(使用(尽管有matplotlib,networkx但有兴趣bokeh),在概念上类似于下面的一个.

在此输入图像描述

如何pos在Python中使用networkx?有效地构建这个图形图? 我想将它用于更复杂的示例,所以我觉得对这个简单示例的位置进行硬编码是没有用的:(.networkx有解决方案吗?

pos(字典,可选) - 以节点为键,位置为值的字典.如果未指定,则将计算弹簧布局定位.有关计算节点位置的函数,请参阅networkx.layout.

我还没有看到任何有关如何实现这一目标的教程,networkx这就是为什么我认为这个问题将成为社区的可靠资源.我已经广泛地完成了这些networkx教程,没有像这样的东西.如果networkx不仔细使用这个pos论点,那么这种网络的布局就无法解释......我相信这是我唯一的选择. https://networkx.github.io/documentation/networkx-1.9/reference/drawing.html文档中的预计算布局似乎都没有很好地处理这种类型的网络结构.

简单示例:

(A)每个外键是图中从左到右移动的迭代(例如,迭代0表示样本,迭代1具有组1-3,与迭代2相同,迭代3具有组1-2等).(B)内的字典包含在该特定迭代当前的分组,和表示当前组的前组的合并的权重(例如,iteration 3Group 1Group 2iteration 4所有的iteration 3's Group 2已进入iteration 4's Group 2iteration 3's Group 1已被划分.权重总是总和为1.

我的代码为上图的连接w /权重:

D_iter_current_previous =    {
        1: {
            "Group 1":{"sample_0":0.5, "sample_1":0.5, "sample_2":0, "sample_3":0, "sample_4":0},
            "Group 2":{"sample_0":0, "sample_1":0, …
Run Code Online (Sandbox Code Playgroud)

python plot graph matplotlib networkx

16
推荐指数
1
解决办法
3636
查看次数

networkx draw graph已弃用的消息

我正在尝试使用带有Jupyter笔记本的python 3.6和带有anaconda的网络包绘制图表networkx.但是图表并没有按照文档绘制,我只是得到了一条弃用的消息.

码:

import networkx as nx
import csv
import matplotlib as plt

G = nx.read_pajek('Hi-tech.net')

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

信息:

MatplotlibDeprecationWarning:pyplot.hold已弃用.未来的行为将与长期默认值一致:plot命令在不先清除Axes和/或Figure的情况下添加元素.

b = plt.ishold()
Run Code Online (Sandbox Code Playgroud)

未来的行为将与长期默认值一致:plot命令在不先清除Axes和/或Figure的情况下添加元素.

plt.hold(b)
Run Code Online (Sandbox Code Playgroud)

warnings.warn("不推荐使用axes.hold,将在3.0中删除")

networkx python-3.x

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