NetworkX玩一下 --update@2017.06.28

写在前面的话

She is compelling,spectral, fascinating, an unforgettably unique performer

在写NetworkX的时候我想起来一个梗,一个叫stromezhang的同学,忘了在哪里工作,负责Android的某个APP的开发,是那个项目的头头。很久以前看的,招聘,然后招聘的是iSO 的开发人员。然后把iOS 写成了IOS以及ios的同学的简历全部都挂了,对,挂了!按照他的说法,这是官方的说法,Android,以及android 着两个写法都是有的。但是iOS 这个,苹果公司开发的所有的东西,iPad,iPhone 都是小写。所以,按照这个哥们的说法,我们应该要尊重以及注意所有的细节。

呐,所以既然要对付各种挑剔的朋友,所以我决定严格按照官网上的写法NetworkX

今天,玩一下图。


NetworkX是用Python编写的

官网连接: http://networkx.readthedocs.io/en/networkx-1.10/#

https://networkx.github.io/


1. 创建图

创建一个空图,没有节点没有边。

>>> import networkx as nx
>>> G=nx.Graph()

根据定义,图是一系列的点和对应的点对(可以叫做边,或者连接的几何等等)的集合。

在NetworkX 中,节点可以是任何可以Hash的对象,例如,一个文本字符串,一张图片,一个XML的对象,或者是另一个图,或者是一个定制的节点对象


2. 节点

增加一个节点

>>> G.add_node(1)

增加一系列的节点

>>> G.add_nodes_from([2,3])

或者是增加nbunch的节点。一个nbunch是任何可以迭代的节点的容器,不是一个图中的任何节点。 比如可以是 一个 list(列表),集合(set),一个图(graph),一个文件(file)等等。

>>> H=nx.path_graph(10)
>>> G.add_nodes_from(H)

我们可以得到的图如下面所示:

这里写图片描述

这个是把H这个里面的图的所有点当做每一个点来处理,当然我们可以把H这个里面的所有点当做一个点来处理。

>>> G.add_node(H)


3. 边

我们的图同样可以通过增加边来扩大。

我们一次增加一条边。

>>> G.add_edge(1,2)
>>> e=(2,3)
>>> G.add_edge(*e) # unpack edge tuple*

我们在增加了这两条边之后我们看看我们的图最后成了什么样子。

这里写图片描述

通过增加一系列的边

>>> G.add_edges_from([(1,2),(1,3)])

或者我们也可以增加任何ebranch 的边。一个ebunch 的边是任何的边的元组的可以迭代的容器。一个边的元组可以是两个节点的元组也可以是一个三元组,跟着一个边的属性。例如:(2,3,{‘weight’:3.1415}) 。边的属性我们将在下面详细讨论。

>>> G.add_edges_from(H.edges())

这里写图片描述

我们可以销毁一个图用下面的一些类似的方法:

Graph.remove_node()

Graph.remove_nodes_from()

Graph.remove_edge()

Graph.remove_edges_from()

我们来试一下效果:

首先我们先将H作为我们的一个点添加进去,然后我们删除这个点H

图2

In [109]: G.add_node(H)

In [110]: nx.draw(G)

In [111]: plt.show()

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值