会玩数据,你也可以绘出死忠粉才懂的星战关系图谱
作为星战迷,看了N遍星球大战,你能说出《星球大战》系列的7部电影中出现了多少个角色、多少个种族、多少艘飞船、多少架战车吗?不要掰着手指头数了,看完这篇你能获知想要的一切~
7部星战,228种实体的1112种关系##
木有看过星战的同学,一张图就可以告诉你,这7部电影里,87名角色、21颗星球、37艘飞船、39架战车、37个种族,还能告诉你,这228个实体的1112种关系。
程序员最擅长的事,就是要用数据呈现你(hu)想(shuo)看(ba)的(dao)。
这次的数据源来自Star Wars API,据说这是全球首个量化的、可供编程使用的星战数据集,开发者经过漫长的搜集和整理,汇总了上面提到的多项星战电影数据(具体参数见文末)。
通过一系列数据收集、数据建模与定量分析,哪怕没有看过星战,也可以通过对信息归类整理,来给大家展现星战错综复杂的角色关系。
PS. 要是图片太酷炫、关系太复杂看不懂?记得点回来听我给你解读~
全景概览.jpg知道这些,你可以更懂“我是你的父亲”##
星战影片涉及到了228个实体,这些实体之间的1112种关联,是可以用知识图谱来刻画——这样你就更清楚地理解“我是你的父亲”的相关信息了。
我是你的父亲.jpg知识图谱其实是个丰富的图模型,图谱中,节点表示实体、节点之间的边表示实体之间的关联,节点和边都可以包含自己的属性。
在图谱上任何一个星战关键词,都能获得完整的知识体系。
为了生成一张知识图谱,需要完成以下三点内容:
- 定义好有哪几类节点、节点之间存在哪几类关系、节点和边可能需要考虑到哪些数据;
- 基于准备好的数据,提取节点和边;
- 使用可视化等技术进行展示,提供图谱探索和关联发现的功能。
构建完知识图谱,接下来就是用了D3来展示。
在这个知识图谱中,节点使用Circle或者Text来表示,不同颜色表示不同类别的节点,彼此相连的节点表示存在关联,比如某个character参演了某部film、某个planet上生活着某个species等。
鼠标悬浮在某个节点上时,仅显示和该节点之间相连的其他节点,这样就能更清楚地看到节点之间的关联了。
当然,也可以在搜索框中输入关键词,只有名称中包含关键词的节点才会显示,帮你快速找到你的绝地武士——LUKE。
对了,实体的相关介绍,也会在右下角显示,请留意~
关系图谱.jpg比如绝地大师Obi-wan Kenobi出现在了这7部影片里。
Obi-wan Kenobi.jpgC-3PO这个人见人爱的逗比机器人,在6部影片里均有出现。
C-3PO.jpg说出“我是你的父亲”的Darth Vader。
Darth Vader.jpg贯穿7部星战的不是演员,是R2-D2##
知识图谱为知识表达提供了一种很好的解决方案,但有些时候我们更关注实体的动态变化情况。
举例来说,我们希望知道每部星战电影中,分别出现了哪些Characters、Planets、Starships、Vehicles和Species,显然这一答案无法从知识图谱中得出,所以接下来借助时间线进行可视化。
由于数据并不包含时间戳信息,因此只能展示每个角色在哪些影片中出现过。
如下图所示,不同的行代表films,不同的列代表不同的实体,不同的颜色代表不同的实体类别。
以演员为例,没有哪位演员参演过星战系列的全部电影,但机器人R2-D2贯穿了整个系列。
星战时间线.jpg如果你对某个元素感兴趣,把鼠标悬停上去,就可以看到实体名啦!
快去找你喜欢的角色吧。
37个光头、19名女性、一个拉高平均体重的胖子##
主角永远自带光环,所以我们又重点研究了一下。
通过Characters的一些统计信息,可以发现在星战这个以男性主导的系列里,只有19名女性。她们平均身高165.8CM、体重56KG,而这个系列里男性的平均身高是185.8CM、体重83.2KG。
星战中的女性角色.jpg当然,星球大战还有些其他角色……
总体上看,星战里的角色平均身高在174CM,平均体重在97KG,为什么那么胖?
这其实是一个异常点(未在图中显示)——Jabba Desilijic Tiure,身高仅175cm,体重却达1358kg,就是他拉高了平均体重,对了,据说他是雌雄同体~
上张图你们感受下:
Jabba Desilijic Tiure.jpg下图中你可以看到相关人物的体重和身高分布,体重或身高为-1表示值缺失,也有少数人物性别信息缺失。
人物身高和体重关系.jpg最后来看下关于Species的统计信息,下图这张图展示的是各种族的平均身高和寿命(-1表示缺失值)。
大多数种族寿命在100年以内,有的可达几百甚至上千年,也有这样的异常点未显示在图中:Droid——人造机器人,寿命为indefinite。
种族身高和寿命关系.jpg另外,从这些数据中,还发现87个角色里,光头非常流行——头发颜色的数据显示37个NONE(没有数据是N\A),19个是棕色头发。
同时,棕色眼睛在这7部电影里最受宠,有21个角色拥有棕色眼睛,其次才是蓝色眼睛,有16人。
人物眼睛颜色.jpg另外,如果你感兴趣的话还可以统计一下,天行者家砍手史(虽然这个并没有数据。。。可你们可以数啊。。。)
对此我有坏感觉##
说了这么久主角,为什么还要把电影作为最大的节点,而不是人物呢?
在梳理的各类实体之间的关系时,我们做了下面这个表,结果……“对此我有坏感觉~”,其实只有电影连接了所有实体,而不是角色。
节点关系对应.jpg最后,再来统计一下每部星战电影中涉及到了多少Characters、Planets、Starships、Vehicles和Species。
如下图所示,可以看出Attack of the Clones参演人员最多,The Force Awakens涉及到的各类元素数量都比较少,当然也可能是因为数据尚未完全整理的原因。
每部电影涉及实体数量统计.jpg对于星战的数据分析远不止于此,如果你感兴趣,甚至你还可以统计到“对此我有坏感觉”在7部影片里出现了9次。
星战电影截图.jpgYoda抱怨“黑暗遮蔽了一切,谁也无法看清未來之事。”
可惜他不知道数据分析的强大力量,这绝对是一个需要认真考虑的“原力”,可以让你穿透黑暗!
Star Wars API字段汇总##
- Film:title、episode_id、opening_crawl、director、producer、release_date、characters、planets、starship、vehicle、species、created、edited、url
- Characters:name、height、mass、hair_color、skin_color、eye_color、birth_year、gender、homeworld、films、species、vehicle、starships、created、edited、url
- Planets:name、rotation_period、orbital_period、diameter、climate、gravity、terrain、surface_water、population、residents、films、created、edited、url
- Starships:name、model、manufacturer、cost_in_credits、length、max_atmosphering_speed、crew、passengers、cargo_capacity、consumables、hyperdrive_rating、MGLT、starship_class、pilots、films、created、edited、url
- Vehicles:name、model、manufacturer、cost_in_credits、length、max_atmosphering_speed、crew、passengers、cargo_capacity、consumables、vehicle_class、pilots、films、created、edited、url
- Species:name、classification、designation、average_height、skin_colors、hair_colors、eye_colors、average_lifespan、homeworld、language、people、films、created、edited、url