复联4上映了!此次比美国还早了两天。固然,我还没看,不会给大家剧透,固然也不想不剧透。mongodb
这一部不只是灭霸这一线剧情的结局,也被认为漫威第三阶段的收官之做。听说此部以后,很多影迷熟知的角色(演员)就要离开漫威世界的荧幕了。所以刚上映就备受关注,今天一天国内票房就已超5亿。网络
上次的文章《这多是我用过最“强大”的API:Marvel API》中,我给你们演示了漫威开放接口(Marvel API)的功能,而且在最后留了个“彩蛋”:争取跟《复联4》同步上线一个案例。ide
很遗憾,最近几天忙着更新网站,眼看要鸽了。但庆幸的是,咱们另外一位实训生 @清风小筑 站出来把坑给填了:工具
对 Marvel API 中的数据进行统计分析,将角色之间关系进行可视化展现。换句话说:用数听说话,谁才是漫威宇宙中着墨最多的人物?学习
我以前作了个小调查:网站
仅就我这边的采样来看,钢铁侠在国内是没法撼动的人气王。固然,这可能由于国内更可能是漫威系列电影观众。ui
那么官方的喜爱又是如何?spa
上文中咱们说过,在 Marvel API 的开放数据中,包含了:.net
- 1491 个角色
- 43759 本漫画
- 6200 个创做者
- 10713 个系列
- 96740 个故事
- 75 个事件
咱们此次案例选取的是 角色(character)和 故事(story)之间的关系:接口
- 选取故事最多的 N 个角色
- 根据共同出现的故事数,衡量角色之间的关联性
通过统计发现,故事数前3的是:
- 蜘蛛侠(Spider-Man)- 5192
- X战警(X-Men)- 4551
- 钢铁侠(Iron Man)- 3483
关联性最高的前3位:
- X战警 - 金刚狼 - 1001
- 神奇四侠 - 霹雳火 - 817
- 神奇四侠- 隐形女侠 - 773
故事数最多的25个英雄/团体的关系图:
故事数最多的99个英雄/团体的关系图:
Data provided by Marvel. 2014 Marvel
数据由 Marvel 提供
来源:
http://marvel.com
- 意料以外但情理之中,蜘蛛侠是出现故事最多的角色。这还只是主线角色,没算上各个平行宇宙和衍生角色。事实上,小蜘蛛在漫威迷中一直有着超高的人气,或许是由于他的故事更接近于现实中的每个平凡人,也或许是他那份“能力越大,责任越大(With great power comes great responsibility)”的坚持。而在国内观众熟知的漫威系列电影中,蜘蛛侠彷佛戏份很少,这是因为蜘蛛侠的电影版权很早就卖给了索尼(X战警和神奇四侠也是相似)。
- 钢铁侠、美队、金刚狼是紧随其后的角色,X战警是故事最多的团体。
- 关系图上的颜色不是咱们手动标注的,而是 Gephi 经过聚类自动划分的。文字标签的大小则体现故事数的多少。X战警、神奇四侠、复仇者联盟,这三个团体垄断了漫威绝大部分的故事。神奇四侠虽然人物和故事不算多,但相关关联很紧密(大多同时出场),相反典型是雷神(Thor),虽然故事不少,但大多独来独往。
最后来讲说这个关系图的实现过程。主要是两大块:
- 从 Marvel API 获取数据。首先是获取全部角色,而后获取角色相关的故事,再根据这些故事信息将角色进行关联统计,最终获得节点(角色、故事数)和边(关联故事数)的数据。
- 经过可视化分析工具 Gephi 将节点和边的数据进行可视化展现,生成关系图表。Gephi 的功能很强大,能够调节不一样的展现效果,各位能够自行体会下。
其余须要注意的:
- 咱们没有直接经过网络请求 Marvel API,而是使用了上次文章中提到的 marvel 模块来实现。(使用示例见前文)
- 中间的临时数据,由于是 JSON 格式,因而咱们用 mongodb 进行了存储,便于后续整理分析。若是你本身运行,也能够经过其余方式(好比文件)进行存储。
- 通过处理后的节点、边数据咱们保存成了 csv 文件,你能够在项目中获取,直接放进 Gephi 使用。仅供学习,请勿商用。
- Marvel API 须要申请秘钥、有请求速率限制,使用时需标注数据出处和来源网址。
相关网址:
Marvel API https://developer.marvel.com/docs
marvel库 https://pypi.org/project/marvel/
Gephi操做手册 https://gephi.org/users/quick-start/