小编Joe*_*oel的帖子

当DISPLAY未定义时,使用matplotlib生成PNG

我正在尝试将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 graph matplotlib

309
推荐指数
9
解决办法
17万
查看次数

存储和访问节点属性python networkx

我有一个使用python创建的节点网络networkx.我想存储在节点的信息,使得我可以访问以后基于节点的标签(节点的名称),并且,其中的信息已被存储(如节点的属性)的字段中的信息.存储的信息可以是一个字符串或数字我希望这样做,以便if xyz是一个节点:

那么我想保存有像的出生日期字符串两个或三个字段xyz dob=1185,出生地点xyz pob=usa和出生的那一天xyz dayob=monday.

我知道我可以使用G.add_node其中的属性字典字段...但我似乎无法访问特定字段.如果有任何其他方式,我会很感激.

然后我想xyz与具有相同信息的网络中的其他节点进行比较.即基于日期,出生地和出生日期的节点xyz与节点abc的交集

例如,对于if节点xyzabc边缘是否打印了各自的dobs,pobs和dayobs

python attributes networkx

41
推荐指数
4
解决办法
5万
查看次数

获取链接到networkx图中给定节点的所有边

只是想知道是否有方便的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)

但期望可能有更好的方法?

python graph-theory networkx

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

可以使用python 3从networkx获取分层图吗?

我正在尝试显示我的类层次结构的树形图,我networkx.将它全部正确绘制,并且显示正常.但是作为一个带有交叉边的圆形图,它是一个纯粹的层次结构,似乎我应该能够将它显示为树.

我已经广泛搜索了这个,并且提供的每个解决方案都涉及使用pygraphviz......但是PyGraphviz不能使用Python 3(来自pygraphviz网站的文档).

有没有人能够在Python 3中获得树形图显示?

python networkx pygraphviz

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

加权边缘如何影响networkx中的PageRank?

我正在使用networkx(python中的图形库),我发现文档说PageRank算法在评分时会考虑边缘权重,但我想知道更大边缘权重是更好还是更低权重更好?

python graph-theory pagerank networkx

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

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中使用integrate.odeint时不调用Dfunc(渐变)?

任何人都可以提供一个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)

python scipy odeint

9
推荐指数
1
解决办法
2327
查看次数

Networkx从未完成计算2 mil节点的中介中心性

我有一个简单的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)

python ipython mongodb networkx

9
推荐指数
1
解决办法
5568
查看次数

如何获取两个节点之间边缘的数据?

我想获得networkx图中两个节点之间的边缘.更具体地说,我想获得与此边缘相关的一些数据.我先前知道这两个节点是链接的.有这个功能吗?

python networkx

8
推荐指数
1
解决办法
4002
查看次数

了解gc.get_referrers

我正在尝试跟踪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 garbage-collection memory-leaks

7
推荐指数
1
解决办法
2224
查看次数