目录

目的:

任务:

过程:

1.数据加载及整理

①加载必要的环境库

②读取文件:

③整理数据

2.全体人物关系网络图的绘制。

3.主角三人关系网络图的绘制。

4.保存图片。

数据文件:

relation工作簿

character工作簿

代码部分:

① 通过openpyxl读取xlsx的数据

②数据处理,把工作簿一和工作簿二的数据进行整合处理。得到name之间对应的关系。

③通过networkx绘制所有人物之间的社交关系图。

④通过networkx绘制哈利波特三个主角人物之间的社交关系图

代码简化版:

数据资源:


目的:

1.熟悉networkx和openpyxl使用
2.掌握python中数据整理的方法
3.掌握networkx中node和edge的使用

任务:

1.数据加载及整理
2.绘制全体人物关系网络图
3.绘制主角三人的关系网络图 
4.保存图片

过程:

1.数据加载及整理

①加载必要的环境库

打开python,加载openpyxl、networkx、matplotlib.pyplot这三个环境库

②读取文件:

通过openpyxl.load_workbook来读取数据文件。

③整理数据

由于networkX是根据edge的关系来绘图,我们需要将关系整理成为元组格式,如('Sirius Black', 'Harry Potter')编号转名字
。将所有关系保存到列表里即可使用add_edges_from来绘制关系图。
我们拿到的数据有两个分页,分页character含有全部的哈利波特全部的人物姓名和id号及任务简介;分页relation含有带有id号的人物关系,但是该分页没有人物的姓名。我们需要整理数据为以下格式:('Sirius Black', 'Harry Potter')

2.全体人物关系网络图的绘制。

整理好数据后,我们首先需要使用plt.figure(figsize = (40,30))调整画布大小,然后建立无向图,加边的集合,绘制图形,显示图形,最终结果参考下图(此为实验成果物1):

3.主角三人关系网络图的绘制。

根据上图我们可以看出由于作品设计到的人物众多,展示全部关系较为杂乱,我们此处只展示与主角三人有直接关系的网络图,我们整理数据,然后按照成果物1的步骤制作主角三人关系网络图。
此为成果物2.如下图

4.保存图片。

我们使用如下命令保存plt.savefig("文件名.png",format ="PNG"),使用时需注意,我们需要注释掉show函数才能保存,注释方法如下:#plt.show()

数据文件:

relation工作簿

source字段为来源id即对应的姓名,target字段为目标人物id姓名

character工作簿

第二个工作簿character,id对应第一个工作簿的id,需要将2个工作簿进行结合,id转化为name。以便后续可视化的进行。

代码部分:

① 通过openpyxl读取xlsx的数据

from openpyxl import load_workbook
#加载Excel
woj=load_workbook(filename=r'D:\Gogle_download\harry potter.xlsx')
#获取表单名称
names=woj.sheetnames
#获取表单对象
shett_object1=woj.worksheets[0]#relation #带有id号的人物关系,但是该分页没有人物的姓名
shett_object2=woj.worksheets[1]#character #哈利波特全部的人物姓名和id号及任务简介
#行切片获得数据
## values_only  false:返回对象   true:返回单元格对应的数据
result=shett_object1.iter_rows(min_row=2,max_row=514,min_col=1,max_col=2,values_only=True)
result=list(result)
result2=shett_object2.iter_rows(min_row=2,max_row=66,min_col=1,max_col=3,values_only=True)
result2=list(result2)

②数据处理,把工作簿一和工作簿二的数据进行整合处理。得到name之间对应的关系。

t1=[]#存放编号
t2=[]#存放名字
for j in result2:t1.append(j[0])t2.append(j[1])
namedict=dict(zip(t1,t2))
#创建字典用于后续把编号转化为名字
resultall=[]
for j in result:resultall.append([namedict[j[0]],namedict[j[1]]])
#创建名字关系
resultall2=[]
for j3 in resultall:resultall2.append(tuple(j3))
#列表转化为元组

③通过networkx绘制所有人物之间的社交关系图。

from matplotlib import pyplot as plt
import networkx as nx
plt.figure(figsize = (40,30))#调整画布大小
G=nx.Graph()
#节点为单个名字
G.add_nodes_from(namedict.values())#创建节点 通过获得字典的键来得到
G.add_edges_from(resultall2)#边的关系
nx.draw_networkx(G)#全体人物关系图
#plt.show()
plt.savefig("allrelation.png",format="PNG")
#成果物1

结果展示:

④通过networkx绘制哈利波特三个主角人物之间的社交关系图

三个主角分别为:赫敏、罗恩、哈利波特

#只画与主角三人有关系的
#Hermione Granger
#Harry Potter
#Ron Weasley
#只画与主角有关系的
zhujiao=[]
for j in result:if namedict[j[0]]=='Harry Potter' or namedict[j[0]]=='Hermione Granger' or namedict[j[0]]=='Ron Weasley' or namedict[j[1]]=='Harry Potter' or namedict[j[1]]=='Hermione Granger' or namedict[j[1]]=='Ron Weasley': zhujiao.append([namedict[j[0]],namedict[j[1]]])#找出主角所有的关系图
zhujiaojiedian=[]
for i in zhujiao:zhujiaojiedian.append(i[0])zhujiaojiedian.append(i[1])
#去重,去掉重复的名字
zhujiaojiedian=list(set(zhujiaojiedian))
from matplotlib import pyplot as plt
import networkx as nx
plt.figure(figsize = (40,30))#调整画布大小
G2=nx.Graph()
G2.add_nodes_from(zhujiaojiedian)#创建节点
G2.add_edges_from(zhujiao)#边的关系
nx.draw_networkx(G2)#全体人物关系图
#plt.show()
plt.savefig("zhujiao.png",format="PNG")#保存图片
#成果物2

结果展示:

代码简化版:

from openpyxl import load_workbook
#加载Excel
hp=load_workbook(harry potter.xlsx')
import networkx as nx
import matplotlib.pyplot as plt
cha=hp['character']
dic={}
for row in cha.values:if row[0] =='id':passelse:dic[row[0]] = row[1]
re = hp['relation']
rela=[]
for row in re.values:if row[0]=='source':passelse:rela.append((dic[row[0]],dic[row[1]]))
plt.figure(figsize=(30,20))
G=nx.Graph()
G.add_edges_from(rela)
nx.draw_networkx(G)
plt.savefig("ht.png")

数据资源:

基于HarryPotter的数据可视化,数据资源-Python文档类资源-CSDN下载

基于Harry Potter的数据可视化相关推荐

  1. 基于echarts 24种数据可视化展示,填充数据就可用,动手能力强的还可以DIY(演示地址+下载地址)

    基于echarts 24种数据可视化展示,填充数据就可用,动手能力强的还可以DIY(演示地址+下载地址) 前言 演示地址 下载地址 Demo示例(部分) 1.总览 2.物流信息展示 3.车辆综合管控平 ...

  2. 基于模板配置的数据可视化平台

    导读:在大数据智能时代,数据分析的价值越来越重要,而数据分析可视化平台的能力要求也越来越高.本文从百度数据中心的数据可视化平台出发,介绍了配置化的数据可视化平台的应用价值,并对数据可视化平台的整体处理 ...

  3. 基于数据挖掘的疾病数据可视化分析与预测系统

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目简介 随着医院信息系统(HIS)在全国各大医院的推广和应用,会有大量和病人相关的临床数据每天在医院中记录, ...

  4. 基于用户行为的数据可视化系统

    Big-data-visualization-system (基于用户行为的数据可视化系统) demo源码已经放在github上面:https://github.com/awhen/Big-data- ...

  5. 基于python的电影数据可视化分析与推荐系统

    温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从国外某电影网站和国内某电影评论网站采集电影数据,并对电影数据进行可视化分析, ...

  6. python基于web可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)

    转自:数据派ID:datapi 作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一 ...

  7. python交互式数据可视化_基于Python实现交互式数据可视化的工具,你用过几种?...

    作者:Alark Joshi 翻译:陈雨琳 来源:数据派THU(ID:DatapiTHU) 我教授了一门关于数据可视化的数据科学硕士课程.我们的数据科学硕士项目是一个为期15个月的强化项目,这个项目已 ...

  8. python实现数据可视化软件_基于Python实现交互式数据可视化的工具

    作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一门关于数据可视化的数据科学硕士课 ...

  9. pythonweb数据可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)

    翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一门关于数据可视化的数据科学硕士课程.我们的数据科学硕士项目是一 ...

  10. 基于WebGL的三维数据可视化大屏开发流 ThingJS

    三维数据大屏可视化系统包含多源数据连接.生成二维/三维视图.构建可视化大屏.大屏功能应用等一体化服务,基于多年可视化项目经验,ThingJS平台得出从数据源上传到可视化大屏应用的完整流程,供参考. 多 ...

最新文章

  1. QNX Hypervisor管理程序
  2. linux 串口minicom配置使用
  3. 下午就要考试啦~~附上自己做的考试范围
  4. SAP HUM 嵌套HU的盘点
  5. Facebook全面推出Watch Party,可多人线上同看直播视频
  6. Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)
  7. running Extension project directly on ABAP server without Launchpad
  8. dubbo学习总结——思维导图
  9. visual studio 2015 rc cordova -hello world
  10. 【work】输出日期为那一年的第几天
  11. (转)DPDK内存管理 04 ---- rte_malloc内存管理
  12. 190527每日一句,励志| 为了成功,约束自己;有时候“再等等”,就再也等不到了
  13. 构建机器学习系统的20个经验教训
  14. 华为最强科普:什么是DSP?
  15. js 骂人不带脏字 (!(~+[]) + {})[--[~+][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] * ~+[]] 图解...
  16. UIView Animation 动画学习总结
  17. python代码调试工具_我猜你需要这个Python调试工具
  18. SAS 时间秒 转换成多少小时,多少分钟,多少秒
  19. 网络电话除了打电话还能用来做什么?
  20. 哥德巴赫猜想(java)

热门文章

  1. 【与奥斯丁的二十种邂逅】-- 得克萨斯首府的小情调城市游 (介绍你在奥斯丁必须做的,推荐做的,和做了你就牛掰了的20件事)...
  2. html rtf转换,如何使用JavaScript将HTML转换为RTF
  3. 【数据库 第n次与MySQL较劲】记录一个据说有初雪的夜晚的breakdown point
  4. 关于符号Symbol第二篇
  5. python中的wx模块
  6. 豆瓣高分电影爬取项目,思路清晰,易上手,附免费代码下载
  7. 谷歌邮箱无法登录问题
  8. 网络错误0x80070005,访问被拒绝[亲测解决]
  9. vc 写一个计算机功能,VC++的一个实例
  10. XML文档类型定义---XML Schema结构