使用networkx及matplotlib库实现社会网络分析及可视化
source link: http://mp.weixin.qq.com/s?__biz=MzI1MTE2ODg4MA%3D%3D&%3Bmid=2650071576&%3Bidx=1&%3Bsn=76295dedecb85ab1be65b411af24c4b8
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
公众号: 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库
设置节点颜色,大小
实战
接下来我们用已经清洗好的数据集绘制《神雕侠侣》人物网络关系图
近期文章
公众号后台回复关键词“ 20191127 ”,即可获得课件资源 , 请在 如果觉得有用,欢迎转发支持~ 如果您想了解如何对小说人物关系数据进行清洗,请关注我们下期内容
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK