38

我正在尝试在 NetworkX 中绘制任何图形,但什么也没得到,甚至没有错误:

import networkx as nx
import matplotlib.pyplot as plt
g1=nx.petersen_graph()
nx.draw(g1)
4

4 回答 4

57

添加到最后:

plt.show()

import networkx as nx
import matplotlib.pyplot as plt
g1 = nx.petersen_graph()
nx.draw(g1)
plt.show()

plt.ion()已调用的交互式 shell 运行时,plt.show()不需要 。这可能就是为什么它在很多例子中被省略的原因。

如果您从脚本(plt.ion()尚未调用)运行这些命令,plt.show()则需要 。plt.ion()可以用于交互式会话,但不建议用于脚本

于 2013-10-06T19:35:03.857 回答
5

在 ipython 笔记本中,只需输入魔法

%matplotlib inline

或者

%matplotlib notebook
于 2014-12-28T20:27:08.383 回答
5

networkx您可以使用 jupyter notebook轻松绘制图表。见第一个例子。

或者,您可以Bokeh用来绘制图形,这增加了有用的功能。该软件包holoviews使使用散景绘制图形变得更加简单。它在悬停在节点上时添加了自动突出显示和显示标签等功能。但是,编辑颜色等似乎是一个问题。

%pylab inline  
# `pylab notebook`  # for interactive plots

import pandas as pd
import networkx as nx
import holoviews as hv

G=nx.Graph()
ndxs = [1,2,3,4]
G.add_nodes_from(ndxs)
G.add_weighted_edges_from( [(1,2,0), (1,3,1) , (1,4,-1) , (2,4,1) , (2,3,-1), (3,4,10) ] ) 
nx.draw(G, nx.spring_layout(G, random_state=100))

在此处输入图像描述

这里是散景和全息视图的例子:

hv.extension('bokeh')
%opts Graph [width=400 height=400]
padding = dict(x=(-1.1, 1.1), y=(-1.1, 1.1))
hv.Graph.from_networkx(G, nx.layout.spring_layout).redim.range(**padding)

在此处输入图像描述

你应该试一试,把它画在你的笔记本上,看看有什么不同。

于 2018-05-21T21:27:56.190 回答
1

It works fine by adding:

import matplotlib.pyplot as plt
plt.show()

to your code. mine worked fine.

于 2019-05-28T17:27:29.347 回答