我正在尝试将networkx与Python一起使用.当我运行此程序时,它会收到此错误.有什么遗漏?
#!/usr/bin/env python
import networkx as nx
import matplotlib
import matplotlib.pyplot
import matplotlib.pyplot as plt
G=nx.Graph()
G.add_node(1)
G.add_nodes_from([2,3,4,5,6,7,8,9,10])
#nx.draw_graphviz(G)
#nx_write_dot(G, 'node.png')
nx.draw(G)
plt.savefig("/var/www/node.png")
Traceback (most recent call last):
File "graph.py", line 13, in <module>
nx.draw(G)
File "/usr/lib/pymodules/python2.5/networkx/drawing/nx_pylab.py", line 124, in draw
cf=pylab.gcf()
File "/usr/lib/pymodules/python2.5/matplotlib/pyplot.py", line 276, in gcf
return figure()
File "/usr/lib/pymodules/python2.5/matplotlib/pyplot.py", line 254, in figure
**kwargs)
File "/usr/lib/pymodules/python2.5/matplotlib/backends/backend_tkagg.py", line 90, in new_figure_manager
window = Tk.Tk()
File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1650, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, …
Run Code Online (Sandbox Code Playgroud) 我有一个使用python创建的节点网络networkx
.我想存储在节点的信息,使得我可以访问以后基于节点的标签(节点的名称),并且,其中的信息已被存储(如节点的属性)的字段中的信息.存储的信息可以是一个字符串或数字我希望这样做,以便if xyz
是一个节点:
那么我想保存有像的出生日期字符串两个或三个字段xyz
dob=1185
,出生地点xyz
pob=usa
和出生的那一天xyz
dayob=monday
.
我知道我可以使用G.add_node
其中的属性字典字段...但我似乎无法访问特定字段.如果有任何其他方式,我会很感激.
然后我想xyz
与具有相同信息的网络中的其他节点进行比较.即基于日期,出生地和出生日期的节点xyz
与节点abc
的交集
例如,对于if节点xyz
和abc
边缘是否打印了各自的dob
s,pob
s和dayob
s
只是想知道是否有方便的networkx函数返回连接到图中的给定节点(或节点)(例如my_node_name
)的边的列表(例如G
).
我可以这样做:
edlist=[]
for ed in G.edges():
if 'my_node_name' in ed:
edlist.append(ed)
Run Code Online (Sandbox Code Playgroud)
但期望可能有更好的方法?
我正在尝试显示我的类层次结构的树形图,我networkx.
将它全部正确绘制,并且显示正常.但是作为一个带有交叉边的圆形图,它是一个纯粹的层次结构,似乎我应该能够将它显示为树.
我已经广泛搜索了这个,并且提供的每个解决方案都涉及使用pygraphviz
......但是PyGraphviz不能使用Python 3(来自pygraphviz网站的文档).
有没有人能够在Python 3中获得树形图显示?
我正在使用networkx(python中的图形库),我发现文档说PageRank算法在评分时会考虑边缘权重,但我想知道更大边缘权重是更好还是更低权重更好?
我试图从一个大图中提取包含特定节点的所有连接节点的子图.
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) 任何人都可以提供一个integrate.odeint
在SciPy中为函数提供jacobian的例子吗?我尝试从SciPy教程odeint示例运行此代码,但似乎永远不会调用Dfunc(渐变).
from numpy import * # added
from scipy.integrate import odeint
from scipy.special import gamma, airy
y1_0 = 1.0/3**(2.0/3.0)/gamma(2.0/3.0)
y0_0 = -1.0/3**(1.0/3.0)/gamma(1.0/3.0)
y0 = [y0_0, y1_0]
def func(y, t):
return [t*y[1],y[0]]
def gradient(y,t):
print 'jacobian' # added
return [[0,t],[1,0]]
x = arange(0,4.0, 0.01)
t = x
ychk = airy(x)[0]
y = odeint(func, y0, t)
y2 = odeint(func, y0, t, Dfun=gradient)
print y2 # added
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Twitter用户图,有大约200万个节点和500万个边缘.我正试图玩Centrality.但是,计算需要很长时间(超过一小时).我不认为我的图形超大,所以我猜我的代码可能有问题.
这是我的代码.
%matplotlib inline
import pymongo
import networkx as nx
import time
import itertools
from multiprocessing import Pool
from pymongo import MongoClient
from sweepy.get_config import get_config
config = get_config()
MONGO_URL = config.get('MONGO_URL')
MONGO_PORT = config.get('MONGO_PORT')
MONGO_USERNAME = config.get('MONGO_USERNAME')
MONGO_PASSWORD = config.get('MONGO_PASSWORD')
client = MongoClient(MONGO_URL, int(MONGO_PORT))
db = client.tweets
db.authenticate(MONGO_USERNAME, MONGO_PASSWORD)
users = db.users
graph = nx.DiGraph()
for user in users.find():
graph.add_node(user['id_str'])
for friend_id in user['friends_ids']:
if not friend_id in graph:
graph.add_node(friend_id)
graph.add_edge(user['id_str'], friend_id)
Run Code Online (Sandbox Code Playgroud)
数据在MongoDB中.这是数据样本.
{
"_id" : ObjectId("55e1e425dd232e5962bdfbdf"),
"id_str" : …
Run Code Online (Sandbox Code Playgroud) 我想获得networkx图中两个节点之间的边缘.更具体地说,我想获得与此边缘相关的一些数据.我先前知道这两个节点是链接的.有这个功能吗?
我正在尝试跟踪Python(2.7)中的内存泄漏.我找到了gc.get_referrers,但是不明白输出.删除后dying_node
(除了我作为狩猎的一部分创建的列表之外,应删除所有引用),我的代码中有:
gc.collect()
print "done dying: ", getrefcount(dying_node) #note, includes the reference from getrefcount
referrers = gc.get_referrers(dying_node)
print "referrers: "
for referrer in referrers:
print referrer
Run Code Online (Sandbox Code Playgroud)
产生输出:
> done dying: 4
> referrers:
> [<__main__.Node instance at 0x104e53cb0>, <__main__.Node instance at 0x104e53b90>, <__main__.Node instance at 0x104e53b00>, <__main__.Node instance at 0x104e53d40>, <__main__.Node instance at 0x104e53ab8>, <__main__.Node instance at 0x104e53bd8>, <__main__.Node instance at 0x104e53a70>, <__main__.Node instance at 0x104e53c20>, <__main__.Node instance at 0x104e53c68>, <__main__.Node instance at 0x104e53b48>]
> [<__main__.Node instance at 0x104e53c20>, …
Run Code Online (Sandbox Code Playgroud) python ×10
networkx ×7
graph-theory ×2
attributes ×1
graph ×1
ipython ×1
matplotlib ×1
memory-leaks ×1
mongodb ×1
odeint ×1
pagerank ×1
pygraphviz ×1
scipy ×1