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设计模式之抽象工厂模式
Aug 25 Python
Python字典及字典基本操作方法详解
Jan 30 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
python getpass实现密文实例详解
Sep 24 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
python使用turtle库绘制奥运五环
Feb 24 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
分享一个python的aes加密代码
Dec 22 Python
Python如何把不同类型数据的json序列化
Apr 30 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
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
php cookie 详解使用实例
2016/11/03 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
TypeScript入门-接口
2017/03/30 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
django项目搭建与Session使用详解
2018/10/10 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
创先争优一句话承诺
2014/05/29 职场文书
药剂专业求职信
2014/06/20 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
综合素质自我评价评语
2015/03/06 职场文书
关于观后感的作文
2015/06/18 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
python 爬取天气网卫星图片
2021/06/07 Python