Python基于network模块制作电影人物关系图


Posted in Python onJune 19, 2020

在我们生活的世界中,每一个人以及每一个事物相互之间都存在着关系,有直接关系,也有间接关系,最终会形成一个无形的大的关系网。network模块是一个用python语言开发的图论和复杂网络建模工具,模块内置了常用的图与复杂网络分析算法。

network模块有四种图:Graph、DiGraph、MultiGraph、MultiDigraph,分别为无多重边无向图、无多重边有向图、有多重边无向图、有多重边有向图。其中Graph是用点和线来刻画离散事物集合中,每对事物间以某种方式相联系的数学模型。

下面我们来分析《复仇者联盟4》人物关系:

import pandas as pd
#导入绘图模块
import networkx as nx
import matplotlib.pyplot as plt
# 读取文件
aa =r'F:\\python入门\\python编程锦囊\\Code(实例源码及使用说明)\\Code(实例源码及使用说明)\\Code(实例源码及使用说明)\\09\\data\\fl4.xls'
df = pd.DataFrame(pd.read_excel(aa))
#去除重复项,并转换成列表
df1=df['label1'].drop_duplicates().values.tolist()
df2=df[['label1','label2','weight']]
#设置画布大小
plt.figure(figsize=(6, 5))
#颜色数据
colors = df['color'].drop_duplicates().values.tolist()
#G:图表,一个networkx图
G = nx.Graph()
# 添加边
for i in df2.index:
  G.add_edge(df2.label1[i], df2.label2[i], weight=df2.weight[i])
# 定义两个边,并给边赋予权重,其中u是起点,v是终点,d是权重
edge1 = [(u, v) for (u, v, d) in G.edges(data=True) if (d['weight'] >=1)]
edge2 = [(u, v) for (u, v, d) in G.edges(data=True) if (d['weight'] >=15)]
# 图的布局
# 节点在一个圆环上均匀分布
pos = nx.circular_layout(G)
#用Fruchterman-Reingold算法排列节点
#pos=nx.spring_layout(G)
#节点随机分布
#pos=nx.spring_layout(G)
# 点
#node_size指定节点的尺寸大小,默认值为300
#node_color指定节点的颜色,默认值为红色
#node_shape节点的形状,默认值为圆形,用o表示
nx.draw_networkx_nodes(G, pos, alpha=1, node_size=200,node_color=colors,node_shape='o')
#nx.draw_networkx_nodes(G, pos, alpha=1, node_size=300,node_color=colors,node_shape='p')
# 边
#pos:字典类型,节点作为键、位置作为值。位置是长度为2的序列
#edgelist:边缘元组的集合,只绘制指定的边,默认值为G.edges()
#width边的宽度,默认值为1.0
#alpha透明度,默认值为1.0(不透明),0为完全透明
#edge_color边的颜色,默认值为黑色
#style边的样式,默认值为实线。
nx.draw_networkx_edges(G, pos, edgelist=edge1,width=1, alpha=0.3, edge_color='g', style='dashed')
nx.draw_networkx_edges(G, pos, edgelist=edge2, width=1.5, alpha=0.5, edge_color='red')
# 标签
#font_size节点标签字体大小,默认值为12
nx.draw_networkx_labels(G, pos, font_size=9)
# 生成结果
plt.axis('off')
plt.title('《复仇者联盟4》人物关系图')
plt.rcParams['font.size'] = 10
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.show()

结果:

Python基于network模块制作电影人物关系图

使用力引导算法Fruchterman-Reingold排列点画图,可以大大减少边的交叉,只需要改两行代码即可:

#用Fruchterman-Reingold算法排列节点
pos=nx.spring_layout(G)
# 点
nx.draw_networkx_nodes(G, pos, alpha=1, node_size=300,node_color=colors,node_shape='p')

结果:

Python基于network模块制作电影人物关系图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
Python字典对象实现原理详解
Jul 01 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
python-xpath获取html文档的部分内容
Mar 06 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
Python必须了解的35个关键词
Jul 16 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
keras中的History对象用法
Jun 19 #Python
python中rc1什么意思
Jun 19 #Python
解决keras backend 越跑越慢问题
Jun 18 #Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 #Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 #Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 #Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 #Python
You might like
PHP 缓存实现代码及详细注释
2010/05/16 PHP
php反射应用示例
2014/02/25 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
js控制div及网页相关属性的代码
2009/12/19 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
使用python实现rsa算法代码
2016/02/17 Python
django之常用命令详解
2016/06/30 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
虚拟机下载python是否需要联网
2020/07/27 Python
python 写一个文件分发小程序
2020/12/05 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
客服部班长工作责任制
2014/02/25 职场文书
元旦联欢会感言
2014/03/04 职场文书
小学语文业务学习材料
2014/06/02 职场文书
申报优秀教师材料
2014/12/16 职场文书
邀请书格式范文
2015/02/02 职场文书
会计工作岗位职责
2015/02/03 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang