在NetworkX中绘制图形

den*_*ufa 27 python matplotlib ipython networkx ipython-notebook

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

import networkx as nx
import matplotlib.pyplot as plt
g1=nx.petersen_graph()
nx.draw(g1)
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 38

添加到最后:

plt.show()
Run Code Online (Sandbox Code Playgroud)
import networkx as nx
import matplotlib.pyplot as plt
g1 = nx.petersen_graph()
nx.draw(g1)
plt.show()
Run Code Online (Sandbox Code Playgroud)

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

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


den*_*ufa 5

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

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

要么

%matplotlib notebook
Run Code Online (Sandbox Code Playgroud)


Sör*_*ren 5

您可以使用 jupyter Notebook 轻松绘制networkx图表。请参阅第一个示例。

或者,您可以使用它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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您应该尝试一下并将其绘制在笔记本上以查看差异。