使用networkx导出关系网络并用gephi进行简单分析

之前使用爬虫获取到了微博上粉丝数大于2000的用户,大概在10W左右,并获取了他们的关注用户列表。现在,需要利用这些节点和节点间的关系网来进行社区探测(community detection),以进行进一步分析。不过在此之前,需要攫取一些小样本进行简单的可视化。

使用networkx(python)导出gexf格式文件

这边使用gephi来进行分析。而使用gephi需要有gexf或者gephi格式的数据。其中,gephi格式类似于工程文件,不仅储藏了数据,也储藏了整个工程中的所有参数,包括颜色等。而gexf只包含数据。因此,需要将mysql中的数据转化为gexf格式。
这里需要借助networkx包。networkx是python下的复杂网络编程包,具体使用方法这里不具体展开,只表述如何将从mysql中导入的node和edge数据生成为network中的Graph对象,然后再生成gexf文件

目前,假设有两个列表数据,一个是node,里面储存了网络中节点的数据,每个节点可以用int来表示,也可以用字符串来表示。另一个是edge,表示网络中节点之间的关系数据,或者说是边的数据。每条边用一个长为2的数组表示,分别表示该条边两边的节点。

举例例子,node=[‘A’,’B’,’C’],
edge=[ [‘A’,’B’] , [‘B’,’C’] ]

现在需要利用node和edge生成Graph类,并生成gexf文件,其实挺简单的

import networkx as nx

G=nx.Graph()
G.add_nodes_from(node)
G.add_edges_from(edge)
nx.write_gexf(G,'your_file_name.gexf')

此时在根目录下会生成名为your_file_name.gexf的文件

使用gephi进行可视化和简单分析

首先打开gephi,然后选择打开图文件,选择之前生成的gexf文件。我这边选用的是前1万名的微博大V以及他们之间的关系网。

使用networkx导出关系网络并用gephi进行简单分析_第1张图片

在图的类型处选择无向图或者是有向图,取决于网络自身的属性。

使用networkx导出关系网络并用gephi进行简单分析_第2张图片

打开以后能看到揉在一起的网络,呈方块状,里面是密密麻麻的节点和边。

使用networkx导出关系网络并用gephi进行简单分析_第3张图片

在左下角有布局选项,选择一个算法,点运行展开(lay out) 我这里选用的是ForceAtlas 2。展开后的结果如下所示

使用networkx导出关系网络并用gephi进行简单分析_第4张图片

这时需要探测关系网中的子团体,需要运行community detection算法。在右边统计一栏中找到模块化,点击运行

使用networkx导出关系网络并用gephi进行简单分析_第5张图片

得到的计算结果如下

使用networkx导出关系网络并用gephi进行简单分析_第6张图片

横轴为社区的编号,纵轴为该社区具有的节点数。由于有大量节点未与其他节点互相关注,因此大部分的社区大小为1。
此时需要对主要社区进行找色,以便于观察。
在左上角的外观-》节点-》数值设定上,选择用modularity class作为渲染方式

使用networkx导出关系网络并用gephi进行简单分析_第7张图片

最后得到的渲染结果如下

使用networkx导出关系网络并用gephi进行简单分析_第8张图片

可以看到一种颜色代表了一个社区。是不是很漂亮呢?

你可能感兴趣的:(社交网络分析,python,算法,python,网络,可视化,微博,gephi)