标签: networkx

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万
查看次数

如何将"SciPy稀疏矩阵"转换为"NumPy矩阵"?

我正在使用一个名为"incidence_matrix(G)"的python函数,它返回图的事件矩阵.它来自Networkx包.我面临的问题是这个函数的返回类型是"Scipy Sparse Matrix".我需要使用numpy矩阵或数组格式的Incident矩阵.我想知道是否有任何简单的方法可以做到这一点?或者是否有任何内置函数可以为我做这个转换?

谢谢

python numpy scipy sparse-matrix networkx

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

How to efficiently calculate triad census in undirected graph in python

I am calculating triad census as follows for my undirected network.

import networkx as nx
G = nx.Graph()
G.add_edges_from(
    [('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'),
     ('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')])

from itertools import combinations
#print(len(list(combinations(G.nodes, 3))))

triad_class = {}
for nodes in combinations(G.nodes, 3):
    n_edges = G.subgraph(nodes).number_of_edges()
    triad_class.setdefault(n_edges, []).append(nodes)
print(triad_class)
Run Code Online (Sandbox Code Playgroud)

It works fine with small networks. However, now I have a bigger network with approximately 4000-8000 nodes. When I try to run …

python graph-theory networkx network-analysis

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

如何从Python获取Neo4j图形数据库的节点数?

我正在尝试使用Python获取Neo4j图形数据库的节点数,但我没有找到任何方法或属性来做到这一点.

有人如何获得这些信息?

像NetworkX这样的其他Python软件包有一种获取此信息的方法.

>>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> G.add_path([0,1,2])
>>> len(G)
3
Run Code Online (Sandbox Code Playgroud)

python neo4j networkx

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

保存没有边距的matplotlib/networkx数字

当我绘制一个图形时matplotlib如何保存它而没有额外的边距?通常当我保存为

plt.savefig("figure.png") # or .pdf
Run Code Online (Sandbox Code Playgroud)

我得到了一些利润:

在此输入图像描述

例:

import matplotlib.pyplot as plt
import networkx as nx

G=nx.Graph()

G.add_edge('a','b',weight=1)
G.add_edge('a','c',weight=1)
G.add_edge('a','d',weight=1)
G.add_edge('a','e',weight=1)
G.add_edge('a','f',weight=1)
G.add_edge('a','g',weight=1)

pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,node_size=1200,node_shape='o',node_color='0.75')

nx.draw_networkx_edges(G,pos,
                width=2,edge_color='b')

plt.axis('off')
plt.savefig("degree.png", bbox_inches="tight")
plt.show() 
Run Code Online (Sandbox Code Playgroud)

更新2:

这些空间设置在轴内.如果我删除,这很清楚plt.axis('off')
所以我认为有一些技巧可以用于Networkx包.

python matplotlib networkx

15
推荐指数
3
解决办法
7772
查看次数

(Python)ValueError:路径中找不到程序点

我有以下问题:我在xUbuntu操作系统上,我试图在Flask应用程序中使用networkx,我有以下代码:

.....
import networkx as nx
......
# Creating and initializing graph object which is networkx object
hosts_graph = get_networkx_graph_object()

# Variable 'coord' where the coordinates for each node will be stored
coord = nx.pygraphviz_layout(hosts_graph, prog = 'dot')
Run Code Online (Sandbox Code Playgroud)

最后一行是411行.我收到以下错误:

File "/home/kiril/Documents/workfolder/omeganoc-sprint/onoc/omeganoc/grapher.py", line 411, in grouping_method
    coord = nx.pygraphviz_layout(hosts_graph, prog = 'dot')
  File "/usr/local/lib/python2.7/dist-packages/networkx-1.7-py2.7.egg/networkx/drawing/nx_agraph.py", line 264, in pygraphviz_layout
    A.layout(prog=prog,args=args)
  File "/usr/local/lib/python2.7/dist-packages/pygraphviz-1.1-py2.7-linux-x86_64.egg/pygraphviz/agraph.py", line 1301, in layout
    data=self._run_prog(prog,' '.join([args,"-T",fmt]))
  File "/usr/local/lib/python2.7/dist-packages/pygraphviz-1.1-py2.7-linux-x86_64.egg/pygraphviz/agraph.py", line 1248, in _run_prog
    runprog=self._get_prog(prog)
  File "/usr/local/lib/python2.7/dist-packages/pygraphviz-1.1-py2.7-linux-x86_64.egg/pygraphviz/agraph.py", line 1236, in _get_prog
    raise …
Run Code Online (Sandbox Code Playgroud)

python graphviz networkx pygraphviz xubuntu

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

在Basemap上使用NetworkX绘制图形

我想在地图上绘制一个图形,其中节点将由坐标(纬度,长度)定义并且具有一些值相关联.

我已经能够将点绘制为底图上的散点图,但似乎无法找到如何在地图上绘制图形.

谢谢.

编辑:我添加了关于如何在底图上绘制点的代码.它的大部分是改编自代码在这个文章.

from mpl_toolkits.basemap import Basemap
from shapely.geometry import Point, MultiPoint
import pandas as pd
import matplotlib.pyplot as plt

m = Basemap(
        projection='merc',
        ellps = 'WGS84',
        llcrnrlon=-130,
        llcrnrlat=25,
        urcrnrlon=-60,
        urcrnrlat=50,
        lat_ts=0,
        resolution='i',
        suppress_ticks=True)

# Create Point objects in map coordinates from dataframe lon
# and lat values
# I have a dataframe of coordinates
map_points = pd.Series(
                [Point(m(mapped_x, mapped_y)) 
                 for mapped_x, mapped_y in zip(df['lon'],
                                               df['lat'])])
amre_points = MultiPoint(list(map_points.values)) 

plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111, …
Run Code Online (Sandbox Code Playgroud)

python networkx matplotlib-basemap

15
推荐指数
1
解决办法
8042
查看次数

从Pandas DataFrame构造NetworkX图

我想从一个简单的Pandas DataFrame创建一些NetworkX图:

        Loc 1   Loc 2   Loc 3   Loc 4   Loc 5   Loc 6   Loc 7
Foo     0       0       1       1       0       0           0
Bar     0       0       1       1       0       1           1
Baz     0       0       1       0       0       0           0
Bat     0       0       1       0       0       1           0
Quux    1       0       0       0       0       0           0
Run Code Online (Sandbox Code Playgroud)

哪里Foo…是指数,并Loc 1Loc 7是列.但转换为Numpy矩阵或重新排列似乎不适用于生成输入nx.Graph().是否有实现这一目标的标准策略?我不反对重新格式化Pandas中的数据 - >转储到CSV - >导入到NetworkX,但似乎我应该能够从索引和值中的节点生成边缘.

python networkx pandas

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

从CSV文件中的Adjacency Matrix绘制NetworkX图

我现在一直在与这个问题作斗争,我知道这很简单 - 但我对Python或NetworkX没什么经验.我的问题非常简单,我试图绘制一个大型数据集(大约200行/列)的矩阵,看起来像这样.第一行和第一列是相同的.

  A,B,C,D,E,F,G,H,I,J,K
A,0,1,1,0,1,1,1,1,0,1,0
B,1,0,0,0,1,1,1,1,0,1,0
C,1,0,0,0,1,1,1,1,0,1,0
Run Code Online (Sandbox Code Playgroud)

它只是一个显示人们如何连接的矩阵,我想要的只是导入和绘制这个csv文件,并在NetworkX中使用它的相应标签.

我有这个文件(people.csv),并在这里查看以前的答案,似乎最好的方法是将数据放在一个numpy数组中.

这似乎有一个问题:

import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
from numpy import genfromtxt
import numpy as np

mydata = genfromtxt('mouse.csv', delimiter=',')
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/npyio.py", line 1272, in genfromtxt
  fhd = iter(np.lib._datasource.open(fname, 'rbU'))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/_datasource.py", line 145, in open
  return ds.open(path, mode)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/_datasource.py", line 472, in open
  found = self._findfile(path)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/_datasource.py", line 323, in _findfile
  if self.exists(name):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/_datasource.py", line 417, …
Run Code Online (Sandbox Code Playgroud)

python csv numpy networkx

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

在 pyvis 中我总是收到此错误:“AttributeError:'NoneType'对象没有属性'render'”

我想使用最新版本的 pyvis 和 python 版本 3.9.6 进行网络可视化:

from pyvis.network import Network
g = Network()
g.add_node(0)
g.add_node(1)
g.add_edge(0, 1)
g.show('test.html')
Run Code Online (Sandbox Code Playgroud)

每次执行时g.show()我都会收到此错误:

Traceback (most recent call last):
  File "/Users/tom/Library/Mobile Documents/com~apple~CloudDocs/Projekte/Coding_/f1 standings/test2.py", line 3, in <module>
    g.show('nx.html')
  File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 546, in show
    self.write_html(name, open_browser=False,notebook=True)
  File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 515, in write_html
    self.html = self.generate_html(notebook=notebook)
  File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 479, in generate_html
    self.html = template.render(height=height,
AttributeError: 'NoneType' object has no attribute 'render'
Run Code Online (Sandbox Code Playgroud)

我尝试更新 pyvis,更改了代码中的各种详细信息,并导入了所有 pyvis.network,但没有任何结果。

python attributeerror networkx python-3.x pyvis

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