相关疑难解决方法(0)

什么可能导致NetworkX和PyGraphViz单独工作但不能一起工作?

我正在努力学习一些Python图形可视化.我发现了一些博客文章做了一些 我想尝试的事情.不幸的是我没有走得太远,遇到这个错误:AttributeError: 'module' object has no attribute 'graphviz_layout'

在我的系统上重现错误的最简单的代码片段是这样的,

In [1]: import networkx as nx
In [2]: G=nx.complete_graph(5)
In [3]: nx.draw_graphviz(G)
------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-3-481ad1c1771c> in <module>()
----> 1 nx.draw_graphviz(G)
/usr/lib/python2.7/site-packages/networkx/drawing/nx_pylab.pyc in draw_graphviz(G, prog, **kwargs)
982 See networkx.draw_networkx() for a description of optional keywords.
983 """
--> 984 pos = nx.drawing.graphviz_layout(G, prog)
985 draw(G, pos, **kwargs)
986
AttributeError: 'module' object has no attribute 'graphviz_layout'
Run Code Online (Sandbox Code Playgroud)

我发现了一个类似的问题,并且这个组合有困难的帖子,但不是完全相同的错误.一个接近 …

python graph graphviz networkx pygraphviz

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

如何在Windows上运行来自pygraphviz的neato

我试图在python(v 2.7)中使用pygraphviz和networkx来创建网络映射.我找到了一个在stackoverflow上看起来非常有用的脚本:

import networkx as nx
import numpy as np
import string
import pygraphviz

dt = [('len', float)]
A = np.array([(0, 0.3, 0.4, 0.7),
               (0.3, 0, 0.9, 0.2),
               (0.4, 0.9, 0, 0.1),
               (0.7, 0.2, 0.1, 0)
               ])*10
A = A.view(dt)

G = nx.from_numpy_matrix(A)
G = nx.relabel_nodes(G, dict(zip(range(len(G.nodes())),string.ascii_uppercase)))    

G = nx.to_agraph(G)

G.node_attr.update(color="red", style="filled")
G.edge_attr.update(color="blue", width="2.0")

G.draw('/tmp/out.png', format='png', prog='neato')
Run Code Online (Sandbox Code Playgroud)

我在最后一行收到错误,基本上找不到neato:

"ValueError:在路径中找不到程序neato."

该错误引用了agraph.py文件pygraphviz,但是当我查看agraph.py时,我看不到任何可能导致问题的内容

任何想法如何解决这个问题?我正在使用Windows和IDLE进行编码.谢谢!

neato python-2.7 pygraphviz

9
推荐指数
2
解决办法
6893
查看次数

当networkx中有数百个节点时,如何避免重叠?

我有2000多个节点和900多个边缘,但是当我尝试在networkx中制作图形时,我发现所有节点都挤在一起。我尝试更改属性值(例如scale,k),但发现它们没有用,因为下面有数百个带有标签的节点,这意味着我无法选择小尺寸的节点。我想知道是否有一种方法可以扩展画布或其他方法来增加节点的距离以避免重叠,这样我就可以清楚地看到每个节点及其标签。

谢谢

python matplotlib networkx

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

如何在networkx中绘制具有社区结构的小图

该图有大约100个节点,社区数量从5到20不等.有没有办法绘制图形,使得同一社区的节点彼此接近?

我试图为不同的社区分配不同的颜色,但这在我的应用程序中不能很好地工作.

我读过这个这个,但没有找到一个好的解决办法.

我正在使用python 2.7.12和newtorkx-1.11

python data-mining networkx graph-visualization

5
推荐指数
1
解决办法
3799
查看次数

从显示中删除 matplotlib 折旧警告

我只是收到一个 MatplotlibDepreciationWarning ,我不喜欢在控制台上看到它。因此我不想看到它。

这是警告:

/home/.../pyvirt/networkx/lib/python3.6/site-packages/networkx/drawing/nx_pylab.py:579:
MatplotlibDeprecationWarning:The iterable function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use np.iterable instead.
        if not cb.iterable(width):`
Run Code Online (Sandbox Code Playgroud)

因此,如果有人可以建议任何方法来消除显示的折旧警告,我们将不胜感激。

我试过了:

import warnings
warnings.filterwarnings("ignore", category=DepriciationWarning)`
Run Code Online (Sandbox Code Playgroud)

程序代码如下,不包含任何错误。

import networkx as nx
import matplotlib.pyplot as plt
import random

G=nx.Graph()
city_set=['Delhi','Bangalore','Hyderabad','Ahmedabad','Chennai','Kolkata','Surat','Pune','Jaipur']
for each in city_set:
    G.add_node(each)

costs=[]
value=100
while(value<=2000):
    costs.append(value)
    value=value+100

while(G.number_of_edges()<16):
    c1=random.choice(list(G.nodes()))
    c2=random.choice(list(G.nodes()))
    if c1!=c2 and G.has_edge(c1,c2)==0:
        w=random.choice(costs)
        G.add_edge(c1,c2,weight=w)

for u in G.nodes():
    for v in G.nodes():
        print(u,v,nx.has_path(G,u,v))

pos=nx.circular_layout(G)
nx.draw(G,pos,with_labels=1)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib networkx python-3.x

5
推荐指数
1
解决办法
7468
查看次数

使用 NetworkX 和 Matplotlib 的图形的高分辨率图像

我有一个 python 代码来生成一个包含 300 个节点和 200 个边的随机图并显示它

import networkx as nx
import matplotlib.pyplot as plt

G = nx.gnm_random_graph(300,200)
graph_pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, graph_pos, node_size=10, node_color='blue', alpha=0.3)
nx.draw_networkx_edges(G, graph_pos)
nx.draw_networkx_labels(G, graph_pos, font_size=8, font_family='sans-serif')
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,因为节点太多,所以我需要有更多的像素,以便我可以放大并保存它。

如果我把

plt.figure(figsize=(18,18))
Run Code Online (Sandbox Code Playgroud)

在显示之前,节点和边不会出现。有什么问题,我该如何解决?

python matplotlib networkx

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

根据列名称为 NetworkX 节点分配颜色

我正在尝试使用 NetworkX 和 Bokeh 构建网络图。我正在使用 NetworkXfrom_pandas_edgelist函数为图表添加数据。我想根据初始数据输入中的列为图表的节点着色。

数据relation框如下:

company   client

Google    AT&T
Google    Cisco       
Amazon    Facebook
Amazon    Snap
Amazon    Microsoft
Apple     Intel
Apple     IBM
Apple     Visa
Run Code Online (Sandbox Code Playgroud)

上面的代码片段只是 DataFrame 的一部分。

我希望所有节点从 到company以不同的颜色返回到client

下面的代码生成一个网络图,其中所有节点的颜色相同。

G=nx.from_pandas_edgelist(relation, 'company', 'client')

# Show with Bokeh
plot = Plot(plot_width=1000, plot_height=800,
            x_range=Range1d(-1.1, 1.1), y_range=Range1d(-1.1, 1.1))
plot.title.text = "Company - Client Network"

node_hover_tool = HoverTool(tooltips=[("Company Name", "@index")])
plot.add_tools(node_hover_tool, BoxZoomTool(), ResetTool())

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

graph_renderer.node_renderer.glyph = Circle(size=20)

graph_renderer.edge_renderer.glyph = …
Run Code Online (Sandbox Code Playgroud)

python networkx bokeh

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