热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运用NetworkX、Gephi和NebulaGraph分析《权力的游戏》角色网络

《权力的游戏》凭借其错综复杂的人物关系和不可预测的情节发展,在全球范围内吸引了大量忠实观众。本文将探讨如何利用NetworkX结合Gephi和NebulaGraph对《权力的游戏》中的人物关系进行深入分析。
c064e9341049f2faf05ca0ad8126706a.png

《权力的游戏》不仅因其紧张刺激的情节而受到全球观众的喜爱,其复杂的人物关系网同样是吸引观众的重要因素。本文旨在介绍如何利用 NetworkX 访问开源分布式图数据库 Nebula Graph,并通过 Gephi 进行可视化,从而对《权力的游戏》中的人物关系进行深入分析。

数据源

本文使用的数据来源于《冰与火之歌》系列小说的第一至第五卷。

  • 人物节点集:每个小说中出现的角色被建模为一个节点,每个节点的主要属性为角色名称。
  • 关系边集:如果两个角色在小说中有直接或间接的互动,则这两个角色之间会形成一条边。边的唯一属性是权重,表示两者之间互动的强度。

这些节点和边共同构成了一个图网络,存储于图数据库 Nebula Graph 中。

社区检测——Girvan-Newman 算法

为了更好地理解角色之间的关系,我们采用 NetworkX 中实现的 Girvan-Newman 社区检测算法来划分网络中的社区。

【Girvan-Newman 算法解析】:此算法通过计算网络中每条边的中间性中心度,并按降序移除这些边,直至网络分裂成多个独立的社区。具体步骤包括:计算所有边的中间性中心度;移除中间性中心度最高的边;重复上述过程,直至每个节点成为独立的社区。

接下来,我们将通过 Python 代码示例来实现这一过程:

comp = networkx.algorithms.community.girvan_newman(G)
k = 7
limited = itertools.takewhile(lambda c: len(c) <= k, comp)
communities = list(limited)[-1]

此外,还需为每个节点添加一个 'community' 属性,标识其所属的社区编号。

community_dict = {}
community_num = 0
for community in communities:
for character in community:
community_dict[character] = community_num
community_num += 1
nx.set_node_attributes(G, community_dict, 'community')

节点样式调整——Betweenness Centrality 算法

为了使可视化结果更加直观,我们根据节点的 Betweenness Centrality 值来调整节点的大小以及标签文字的大小。

【Betweenness Centrality 解释】:节点的中心性用于评估节点在网络中的重要性,Betweenness Centrality 是通过计算通过该节点的最短路径数量来衡量节点的重要性。

计算每个节点的 Betweenness Centrality 值,并将其作为节点的属性保存:

betweenness_dict = nx.betweenness_centrality(G) # 计算 Betweenness Centrality
nx.set_node_attributes(G, betweenness_dict, 'betweenness')

边的宽度设定

边的宽度直接反映了边的权重,即两个角色之间互动的强度。

至此,每个节点具有 'name'、'community' 和 'betweenness' 三个属性,而每条边则具有 'weight' 属性。

使用 Gephi 进行高级可视化

尽管 NetworkX 提供了基本的绘图功能,但 Gephi 在交互性和视觉效果方面更为出色。我们将之前处理过的数据导出为 .gexf 文件,并导入 Gephi 进行进一步的美化。

nx.write_gexf(G, 'game.gexf')

在 Gephi 中,通过调整 Force Atlas 布局参数,如增加斥力强度,可以有效避免节点重叠,提升图形美观度。同时,通过为不同社区分配不同的颜色,以及根据节点的 Betweenness Centrality 调整节点大小,可以更加直观地展示角色之间的关系强度。

最终,导出高质量的图像文件,完成《权力的游戏》角色关系图的制作。

后续文章预告

本篇文章介绍了如何使用 NetworkX 和 Gephi 对《权力的游戏》角色关系进行分析和可视化。下一篇文章将继续探索如何利用 NetworkX 访问存储在 Nebula Graph 中的数据。

本文涉及的代码可以在GitHub 仓库中找到。

致谢:感谢所有支持我的读者,本文是在参考了相关工作的基础上完成的,详情请见参考资料。

参考资料

[1] Kaggle - Game of Thrones Dataset

[2] Nebula Graph 官方网站

[3] NetworkX 官方网站

[4] Gephi 官方网站

[5] GitHub - nx2gephi

[6] Graph of Thrones - Neo4j 社交网络分析

作者有话说:大家好,我是王杰,一名专注于图数据 Nebula Graph 的研发工程师。希望通过这篇文章能够帮助大家更好地理解和应用图数据分析技术。如果有任何建议或指正,欢迎随时交流。

推荐阅读
  • 博主从零开始学习HTML(入门基础)
    从零开始学习HTML(入门基础)互联网三大基石HTTP协议URL:统一资源定位符HTML:超文本标记语言HTML的Head标签中的常用元素&amp;lt;!--告知 ... [详细]
  • Jenkins 安装指南:Windows 平台详解
    本文详细介绍了如何在Windows平台上安装和配置Jenkins,包括安装步骤、启动方法及基本的系统配置,旨在帮助初次使用者顺利搭建持续集成环境。 ... [详细]
  • 应用场景在开发中,我们经常需要把一些随时可能变化的属性配置到配置文件中,这样耦合性低,方便维护。SpringBoot在这方面为我们提供了很大的便捷,我们可以很轻易的将propert ... [详细]
  • 本教程将指导您完成 Spring Boot 应用程序中 MySQL 数据库的配置,并通过 JdbcTemplate 进行基本的数据操作测试。在此之前,我们已经成功打包并测试了 jar 和 war 包,同时实现了 JSP 页面的访问,但页面数据是静态配置的。现在,让我们一起进入数据库配置的世界。 ... [详细]
  • 深入解析:主流开源分布式文件系统综述
    本文详细探讨了几款主流的开源分布式文件系统,包括HDFS、MooseFS、Lustre、GlusterFS和CephFS,重点分析了它们的元数据管理和数据一致性机制,旨在为读者提供深入的技术见解。 ... [详细]
  • 本文详细介绍了WebRTC提供的音频处理引擎,包括自动增益控制(AGC)、噪声抑制(ANS)、移动设备声学回声消除(AEC)及静音检测(VAD)等核心算法,并提供了完整的C语言实现代码。 ... [详细]
  • 车载T-BOX智能网联终端的设计与实现
    本文介绍了一款基于瑞萨RH850微控制器、TICC2640R2F蓝牙微控制器和高通MDM9628处理器的T-BOX车载终端的设计。该终端通过集成CAN总线、GPS定位、数据加密、蓝牙通信和LTE无线数据传输技术,实现了车辆信息的高效采集与云端通信,支持远程车辆控制和诊断等功能。 ... [详细]
  • Java性能优化指南 | 制定有效的性能优化策略
    探讨Java应用性能优化的方法与策略,包括性能测试技巧、常见问题及解决方案,旨在帮助开发者提升系统性能。 ... [详细]
  • 近期,公司在构建新的交易系统时遇到了一个常见的问题——金额存储。由于涉及资金的操作需要高度的准确性,使用float类型进行金额计算可能会导致不可预见的误差。本文将深入探讨这一问题,并提供解决方案。 ... [详细]
  • 调料|信息源_MVI到底是不是凑数的?通过案例与MVVM进行比较
    调料|信息源_MVI到底是不是凑数的?通过案例与MVVM进行比较 ... [详细]
  • 本文详细探讨了如何在 SparkSQL 中创建 DataFrame,涵盖了从基本概念到具体实践的各种方法。作为持续学习的一部分,本文将持续更新以提供最新信息。 ... [详细]
  • socket函数SOCKET()我们使用系统调用socket()来获得文件描述符:#include#includei ... [详细]
  • SQL执行计划解析(2) 基本查询的图形执行计划
    SQL执行计划解析(2)-基本查询的图形执行计划(上)某种程度上,学习阅读图形执行计划和学习一门新语言很类似。 ... [详细]
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
  • 1.3数据库系统结构及组成(三级模式结构)
    文章目录1.3.1数据库系统结构一、数据库系统模式的概念二、数据库系统的三级模式结构三、数据库的二级映像功能与数据独立性1.3.2数据库系统的体系结构一、DBS体系结构的组成二、D ... [详细]
author-avatar
重新入梦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有