会玩数据,你也可以绘出死忠粉才懂的星战关系图

作为星战迷,看了N遍星球大战,你能说出《星球大战》系列的7部电影中出现了多少个角色、多少个种族、多少艘飞船、多少架战车吗?不要掰着手指头数了,看完这篇你能获知想要的一切~

7部星战,228种实体的1112种关系

木有看过星战的同学,一张图就可以告诉你,这7部电影里,87名角色、21颗星球、37艘飞船、39架战车、37个种族,还能告诉你,这228个实体的1112种关系。

程序员最擅长的事,就是要用数据呈现你(hu)想(shuo)看(ba)的(dao)。

这次的数据源来自Star Wars API,这是全球首个量化的、可供编程使用的星战数据集,开发者经过漫长的搜集和整理,汇总了上面提到的多项星战电影数据(具体参数见文末)。

通过一系列数据收集、数据建模与定量分析,哪怕没有看过星战,也可以通过对信息归类整理,来给大家展现星战错综复杂的角色关系。

炫酷的交互请戳(PC端效果更佳)

PS. 要是图片太酷炫、关系太复杂看不懂?记得点回来听我给你解读~

知道这些,你可以更懂“我是你的父亲”

星战影片涉及到了228个实体,这些实体之间的1112种关联,是可以用知识图谱来刻画——这样你就更清楚地理解“我是你的父亲”的相关信息了。

知识图谱是个丰富的图模型,图谱中,节点表示实体、节点之间的边表示实体之间的关联,节点和边都可以包含自己的属性。

在图谱上任何一个星战关键词,都能获得完整的知识体系。

为了生成一张知识图谱,需要完成以下三点内容:

  1. 定义好有哪几类节点、节点之间存在哪几类关系、节点和边可能需要考虑到哪些数据;
  2. 基于准备好的数据,提取节点和边;
  3. 使用可视化等技术进行展示,提供图谱探索和关联发现的功能。

构建完知识图谱,接下来就是用D3进行展示。

在这个知识图谱中,节点使用Circle或者Text来表示,不同颜色表示不同类别的节点,彼此相连的节点表示存在关联,比如某个character参演了某部film、某个planet上生活着某个species等。

鼠标悬浮在某个节点上时,仅显示和该节点之间相连的其他节点,这样就能更清楚地看到节点之间的关联了。

当然,也可以在搜索框中输入关键词,只有名称中包含关键词的节点才会显示,帮你快速找到你的绝地武士——LUKE。

对了,实体的相关介绍,也会在右下角显示,请留意~

比如绝地大师Obi-wan Kenobi出现在了这7部影片里。

C-3PO这个人见人爱的逗比机器人,在6部影片里均有出现。

说出“我是你的父亲”的Darth Vader。

贯穿7部星战的不是演员,是R2-D2

知识图谱为知识表达提供了一种很好的解决方案,但有些时候我们更关注实体的动态变化情况。

举例来说,我们希望知道每部星战电影中,分别出现了哪些Characters、Planets、Starships、Vehicles和Species,显然这一答案无法从知识图谱中得出,所以接下来借助时间线进行可视化。

由于数据并不包含时间戳信息,因此只能展示每个角色在哪些影片中出现过。

如下图所示,不同的行代表films,不同的列代表不同的实体,不同的颜色代表不同的实体类别。

以演员为例,没有哪位演员参演过星战系列的全部电影,但机器人R2-D2贯穿了整个系列。

如果你对某个元素感兴趣,把鼠标悬停上去,就可以看到实体名啦!

快去找你喜欢的角色吧。

37个光头、19名女性、一个拉高平均体重的胖子

主角永远自带光环,所以我又重点研究了一下。

通过Characters的一些统计信息,可以发现在星战这个以男性主导的系列里,只有19名女性。她们平均身高165.8CM、体重56KG,而这个系列里男性的平均身高是185.8CM、体重83.2KG。

当然,星球大战还有些其他角色……

总体上看,星战里的角色平均身高在174CM,平均体重在97KG,为什么那么胖?

这其实是一个异常点——Jabba Desilijic Tiure,身高仅175cm,体重却达1358kg,就是他拉高了平均体重,对了,据说他是雌雄同体~

上张图你们感受下:

下图中你可以看到相关人物的体重和身高分布,体重或身高为-1表示值缺失,也有少数人物性别信息缺失。

最后来看下关于Species的统计信息,下图这张图展示的是各种族的平均身高和寿命(-1表示缺失值)。

大多数种族寿命在100年以内,有的可达几百甚至上千年,也有这样的异常点未显示在图中:Droid——人造机器人,寿命为indefinite。

另外,从这些数据中,还发现87个角色里,光头非常流行——头发颜色的数据显示37个NONE(没有数据是N\A),19个是棕色头发。

同时,棕色眼睛在这7部电影里最受宠,有21个角色拥有棕色眼睛,其次才是蓝色眼睛,有16人。

另外,如果你感兴趣的话还可以统计一下,天行者家砍手史(虽然这个并没有数据。。。可你们可以数啊。。。)

对此我有坏感觉

说了这么久主角,为什么还要把电影作为最大的节点,而不是人物呢?

在梳理的各类实体之间的关系时,我们做了下面这个表,结果……“对此我有坏感觉~”,其实只有电影连接了所有实体,而不是角色。

最后,再来统计一下每部星战电影中涉及到了多少Characters、Planets、Starships、Vehicles和Species。

如下图所示,可以看出Attack of the Clones参演人员最多,The Force Awakens涉及到的各类元素数量都比较少,当然也可能是因为数据尚未完全整理的原因。

对于星战的数据分析远不止于此,如果你感兴趣,甚至你还可以统计到“对此我有坏感觉”在7部影片里出现了9次。

Yoda抱怨“黑暗遮蔽了一切,谁也无法看清未來之事。”

可惜他不知道数据分析的强大力量,这绝对是一个需要认真考虑的“原力”,可以让你穿透黑暗!

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

代码和数据

项目全部代码和数据托管在Github上,请各位拍砖~

作者:张宏伦

关键字:数据

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部