使用networkx及matplotlib库实现社会网络分析及可视化

公众号: HR和Python

4年人力资源从业经验, 情报学硕士 主要内容涵盖python、数据分析和人力资源相关内容

networkx是python的一个第三方包,可以方便地调用各种图算法的计算。通过调用python画图包matplotlib能实现图的可视化。如果需要详细了解networks库可以参照官方文档:https://networkx.github.io/documentation/networkx-1.9/

1.安装库

安装networkx


2.使用

创建一个没有节点也没有边的空图

在使用networks进行创建网络关系及网络分析之前,我们首先要先创建空图,在networks库中,提供三种类型的图:简单无向图graph,有向图digraph,可重复边的multi-graph。语法如下:

代码 功能
G=nx.Graph() 创建空的简单图
G=nx.DiGraph() 创建空的简单有向图
G=nx.MultiGraph() 创建空的多图
G=nx.MultiDiGraph() 创建空的有向多图

比如我们创建名为G的无向图,具体代码如下:

创建节点(add_note)

这里的点可以是任意可区分的对象(hashable),比如数字,字符串,对象等。

用一个对象多为key来唯一区别一个点

用一个列表来批量加入点

用一个图对象作为加入点

嵌入到其他图中这里D作为一个点的key,或者把一个图的所有点赋予另一个图

  • G.add_node(D)

  • G.add_ nodes_ from(D)这里返回D的所有点,赋予G

比如我们创建节点名为1和”python”的节点 具体代码如下:

删除节点(remove_node)

删除节点和创建节点用法几乎相同,比如我们删除节点’python’,或者从列表[1,2,3]中删除节点

创建边

功能 代码
节点1,2之间创建一条边 G.add_edge(1,2)
用包含元组的列表批量创建边 G.add_ edges_ from([(1,2),(2,3)]
将一个图的边赋予另一个图 G.add_ edges_ from(H)

删除边(remove_edge)

删除节点和创建节点用法几乎相同,比如我们删除节点1,2之间的边,或者批量删除节点(1,2),节点(3,4)之间的边

访问

我们可以访问图中的节点和节点之间的边

  • 访问 G.nodes()

  • 访问节点 G.edges()

画网络图

将创建的图进行可视化呈现需要用到matplotlib.pyplot库

设置节点颜色,大小

实战

接下来我们用已经清洗好的数据集绘制《神雕侠侣》人物网络关系图

近期文章

代码不到40行的超燃动态排序图

如何使用Adaboost预测下一次营销活动的效果

Python网络爬虫与文本数据分析

日期数据操作第1期 datetime库

日期数据操作第2期 pandas库

Python语法快速入门

Python爬虫快速入门

文本数据分析文章汇总(2016-至今)

当文本分析遇到乱码(ง’⌣’)ง怎么办?

Loughran&McDonald金融文本情感分析库

当pandas遇上数据类型问题

如何理解pandas中的transform函数

计算社会经济学

一行pandas代码生成哑变量

Python最被低估的库,用好了效率提升10倍!

公众号后台回复关键词“ 20191127 ”,即可获得课件资源 请在 如果觉得有用,欢迎转发支持~ 如果您想了解如何对小说人物关系数据进行清洗,请关注我们下期内容