networkxnetworkx入门


备注

本节概述了networkx是什么,以及开发人员可能想要使用它的原因。

它还应该提到networkx中的任何大型主题,并链接到相关主题。由于networkx的文档是新的,您可能需要创建这些相关主题的初始版本。

使用networkx在matplotlib中显示节点的基本程序

import networkx as nx  # importing networkx package
import matplotlib.pyplot as plt # importing matplotlib package and pyplot is for displaying the graph on canvas 
b=nx.Graph()
b.add_node('helloworld')
b.add_node(1)
b.add_node(2)
'''Node can be called by any python-hashable obj like string,number etc'''
nx.draw(b)  #draws the networkx graph containing nodes which are declared till before
plt.show()  # displays the networkx graph on matplotlib canvas
 

补充说明:

nx.draw(b,nodelist=[1,'helloworld']) #displays the particular nodes which are given by nodelist only 
nx.draw_networkx(b,nodelist=[1,'helloworld']) #displays the node along with its name given by us i.e 1, hello  respectively
 

安装或设置

欢迎来到Graphs世界。如果您已连接数据,则可能需要其中一种类型的图形来对这些模式进行建模。使用图表可以完成几项工作,例如映射流量模式,管理配水网络,社交媒体分析等等......我们需要能够创建与每个数据相关的数据的节点和边缘。

NetworkX是一个处理图形数据库创建/导入/导出/操作/算法/绘图的库。您可以开始使用多种类型的网络图。例如:Facebook可能会将他们的用户放在一个普通的Graph()中

import networkx as nx
facebook = nx.Graph()  
facebook.add_node('you')
facebook.add_node('me')
if both_agree_to_be_friends('you','me'):
    facebook.add_edge('you','me') #order isn't important here.
 

Facebook将使用常规的Graph(),因为节点之间的边缘没有任何特殊之处。这个Facebook示例只能在节点之间有一个边缘(友谊)。

另一种类型的图形是有向图。 Twitter会使用有向图,因为节点有方向。在Twitter我可以关注你,但你不必跟着我。所以我们可以用这段代码表示:

import networkx as nx
twitter = nx.DiGraph()
twitter.add_node('you')
twitter.add_node('me')
twitter.add_edge('me','you') #order is important here.
 

这就是Twitter如何设置'我'来跟随'你',而不是相反。

还有MultiGraphs()和MultiDiGraphs()以及两个节点之间需要多个边缘的情况。这四种类型涵盖了可以用图表表示的各种问题。如果需要,可以向节点和边添加数据字典。该模块文档令人难以置信。每个算法都经过深入研究和实施。我希望你喜欢和它一起工作。

安装说明: 此处提供有关安装NetworkX的详细说明。

与任何其他python软件包一样,NetworkX可以使用pip,Miniconda / Anaconda和源代码安装。

用pip安装

pip install networkx
 

将尝试查找并安装与您的操作系统和Python版本匹配的适当版本的NetworkX。

要使用pip,您需要安装setuptools。

如果要从GitHub安装开发版本,请使用该命令

pip install git://github.com/networkx/networkx.git#egg=networkx
 

Miniconda和蟒蛇使用conda 的软件安装/升级。

NetworkX 目前Anaconda一起 安装Miniconda默认不附带NetworkX。

您可以使用以下命令将NetworkX更新/安装到最新版本:

conda install networkx
 

或者如果您想更新NetworkX安装

conda update networkx
 

从源代码安装

源文件存档

  1. https://pypi.python.org/pypi/networkx/下载源代码或获取最新版本
  2. 解压缩并将目录更改为源目录(它应该包含文件README.txt和setup.py)。
  3. 运行python setup.py install 来构建和安装
  4. (可选)如果安装了鼻子,则运行nosetests来执行测试。

从GitHub安装

  1. 克隆NetworkX存储库(有关选项,请参阅https://github.com/networkx/networkx/

    git clone https://github.com/networkx/networkx.git
     
  2. 将目录更改为NetworkX

  3. 运行python setup.py install 来构建和安装

  4. (可选)如果安装了鼻子,则运行nosetests来执行测试。

如果您无权在系统上安装软件,则可以使用--user , - --prefix--home 标志将setup.py安装到另一个目录中。

要求要使用NetworkX,您需要Python 2.7,3.3或更高版本

可选包

  1. NumPy:提供图形的矩阵表示,并在一些图算法中用于高性能矩阵计算。 ( http://scipy.org/下载)
  2. SciPy:提供图形的稀疏矩阵表示和许多数值科学工具。 ( http://scipy.org/下载)
  3. Matplotlib:提供灵活的图形绘制。 ( http://matplotlib.sourceforge.net/)
  4. GraphViz与PyGraphviz( http://pygraphviz.github.io)或pydotplus( https://github.com/carlos-jenkins/pydotplus)结合使用:提供图形绘制和图形布局算法。 ( http://graphviz.org)
  5. PyYAML:YAML格式读写所必需的。 ( http://pyyaml.org)

3http//conda.pydata.org/miniconda.html 2https//networkx.github.io/documentation/development/install.html