读书笔记3|使用Python,networkx对卡勒德胡赛尼三部曲之——《群山回唱》人物关系图谱绘制

news2025/7/8 1:03:00

读书笔记3|《群山回唱》-卡勒德胡赛尼

在这里插入图片描述

踉跄前行中,你总能在他们身上找到丢失的那一部分记忆。

一度看不下去这本书,因为最开始的章节里太痛了,加上我也离开我的孩子,生活已经够苦,我需要一点糖。这次实在太无聊了,又认真的翻开这本书,开始梳理记录人物关系及人名。因此我才能顺利的看完。

这篇博客将介绍如何使用python,networkx对卡勒德胡赛尼三部曲之——《群山回唱》人物关系图谱进行绘制。
不太完美的是没法把人物关系也标注上去。

1. 人物关系表

qshq.txt

阿卜杜拉,帕丽,妹妹
阿卜杜拉,苏丹娜,妻子
阿卜杜拉,小帕丽,女儿
阿卜杜拉,阿卜杜拉妈妈,妈妈
阿卜杜拉,萨布尔,爸爸
阿卜杜拉,帕尔瓦娜,继母
帕尔瓦娜,纳比,哥哥
帕尔瓦娜,马苏玛,双胞胎姐姐
马苏玛,纳比,哥哥
纳比,妮拉·瓦赫达提,女主人
阿卜杜拉,奥马尔,同父异母弟弟
阿卜杜拉,伊克巴尔,同父异母弟弟
伊克巴尔,吴拉姆,儿子
吴拉姆,帕尔瓦娜,奶奶
吴拉姆,阿卜杜拉,伯伯
帕尔瓦娜,奥马尔,大儿子
帕尔瓦娜,伊克巴尔,小儿子
帕丽,舒贾,帕丽的狗
阿卜杜拉,谢基卜毛拉,村里的长者
谢基卜毛拉,巴依吐拉,儿子
纳比,巴依吐拉,发小
巴依吐拉,穆特里卡,儿子满月宴卖艺人
纳比,苏莱曼·瓦赫达提,男主人
苏莱曼·瓦赫达提,扎西德,花艺员工
帕丽,帕尔瓦娜,继母
阿卜杜拉,纳比,舅舅
帕丽,纳比,舅舅
巴希里,苏莱曼·瓦赫达提,邻居
巴希里,巴希里·伊德里斯,儿子
巴希里哥哥,巴希里·铁木尔,儿子
伊德里斯,巴希里·铁木尔,堂弟
伊德里斯,娜希尔,妻子
伊德里斯,勒马尔,大儿子
伊德里斯,扎比,大儿子
纳比,马科斯·瓦尔瓦里斯,战乱后来的医生
马科斯,阿姆拉·阿德莫维奇小姐,朋友
阿姆拉·阿德莫维奇小姐,罗莎娜(罗诗),养女
罗莎娜(罗诗),马科斯,为罗莎娜(罗诗)整形的医生
娜希尔,辛西娅(普拉提瑜伽老师),健身房那儿的老师
伊德里斯,琼·谢弗,上司
妮拉·瓦赫达提,于连,情人
于连,克里斯蒂安,学生时代的朋友
于连,奥雷莉,学生时代的朋友
妮拉·瓦赫达提,德劳内大夫,医生
妮拉·瓦赫达提,艾蒂安·布斯图勒,采访记者
帕丽,科莱特,好友
妮拉·瓦赫达提母亲,阿涅丝,妹妹
帕丽,扎希娅,室友
扎希娅,萨米,未婚夫
帕丽,埃里克,老公
帕丽,伊莎贝尔,大女儿
伊莎贝尔,阿贝尔(掌勺厨师),老公
帕丽,阿兰,二儿子
阿兰,安娜,妻子
帕丽,蒂埃里,三儿子
科莱特,迪迪耶,老公
阿德尔,马拉拉伊,老师
阿德尔,巴巴江(指挥官),父亲
阿德尔,阿丽娅,母亲
巴巴江,卡比尔,保镖一
巴巴江,阿兹马赖,保镖二
阿丽娅,娜尔吉丝,姐姐
玛达丽娜,多利安,第一任丈夫
玛达丽娜·贾纳科斯,萨丽娅,女儿
多利安·贾纳科斯,萨丽娅·贾纳科斯,父亲
玛达丽娜,安德烈亚斯,第二任丈夫
玛达丽娜,埃利亚斯,情人
多利安,阿波罗(把5岁萨丽娅咬毁容了),狗
奥德丽娅·奥蒂,马科斯·瓦尔瓦里斯,儿子
奥德丽娅,玛达丽娜,朋友
马达丽娜,安德烈亚斯·贾纳科斯,老公
马科斯,加里,伙伴
马科斯,阿方索,伙伴
马科斯,詹娜,女友
小帕丽,埃克托尔·华雷斯,邻居
塞萨尔,埃克托尔·华雷斯,儿子
小帕丽,吉莱斯皮夫人,老师
小帕丽,杰里米·沃里克,同学

1. 效果图如下

字数太多,很乱,需要对标签进行自适应下:
在这里插入图片描述

标签自适应效果图如下:
在这里插入图片描述

添加node颜色及边缘颜色,效果图如下:
在这里插入图片描述

2. 优化

只尝试了最基本的绘制,还可以尝试以下示例:

  • 还可以对主角进行标签颜色及大小区分:
    在这里插入图片描述

  • 节点发散
    在这里插入图片描述

  • 主角及关系线不同区分:

在这里插入图片描述

3. 源码

# python plot_qshc.py
# 对群山回唱人物关系图谱进行绘制

import sys

import matplotlib.pyplot as plt
import networkx as nx

print(sys.getdefaultencoding())
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

nodes = []
edegs = []
with open("qshc.txt", 'r', encoding='utf-8', errors='ignore') as f:
    data = f.readlines()
    print(data)

    for i, line in enumerate(data):
        print(i, line.replace("\n", ""))
        nodes.append(line.split(",")[0])
        nodes.append(line.split(",")[1])
        edegs.append((line.split(",")[0], line.split(",")[1]))

    nodes = set(nodes)

    print(nodes)
    print(edegs)

original_graph = nx.DiGraph()

node_sizes = [2000 for node in nodes]
node_colors = ["red" for n in nodes]

original_graph.add_nodes_from(nodes)
original_graph.add_edges_from(edegs)
base_options = dict(with_labels=True, edgecolors="blue")
fig, ax = plt.subplots(figsize=(12, 12))
plt.title("群山回唱人物关系图 Original (%s edges)" % original_graph.number_of_edges())
nx.draw_networkx(original_graph, node_color=node_colors, **base_options)

# 缩放图表以保证标签可读
ax.margins(0.1, 0.05)
plt.tight_layout()
plt.show()

参考

  • https://networkx.org/documentation/latest/auto_examples/index.html

  • https://networkx.org/documentation/latest/auto_examples/drawing/plot_chess_masters.html#sphx-glr-auto-examples-drawing-plot-chess-masters-py

  • https://networkx.org/documentation/latest/auto_examples/graph/plot_words.html#sphx-glr-auto-examples-graph-plot-words-py

  • https://networkx.org/documentation/latest/auto_examples/drawing/plot_weighted_graph.html#sphx-glr-auto-examples-drawing-plot-weighted-graph-py

  • https://networkx.org/documentation/latest/auto_examples/algorithms/plot_dedensification.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/6934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php-上传图片加水印(文字水印图片水印)

img.php <?php $img 1.jpg; //获取图片信息 $info getimagesize($img); //获取图片类型 $type image_type_to_extension($info[2],false); //在内容中创建一个和图片一模一样的图片 $ext "imagecreatefrom{$type}"; //图片复制到内存中 $image $ext($img);…

基于SpringBoot前后端分离的网吧管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SpringBoot 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目…

PICO《轻世界》体验:随心畅玩,洒脱创作,潜力无限

不少玩家应该还记得&#xff0c;PICO 4发布会上曾宣布将在VR运动健身、VR视频、VR娱乐、VR创造四大方向展开内容布局。而目前&#xff0c;前三个完成了基本部署&#xff0c;在创造方向上则依托于刚刚上线的《轻世界》这款应用。《轻世界》是一款3D内容UGC创作产品&#xff0c;目…

php宝塔部署实战thinkphp考试平台管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 有个朋友发消息跟我说&#xff0c;在网上下载了一套thinkphp考试管理系统的源码&#xff0c;在搭建的时候遇到问题一直部署不起来&#xff0c;让我帮他看看&#xff0c;我看了下代码&#xff0c;里面有些部分代码…

2022年11月华南师范大学自考本科网络工程-本科实践题目

《互联网及其应用&#xff08;03142&#xff09;&#xff08;实践&#xff09;》课程试卷 答卷提交说明&#xff1a;编程代码与输出结果截图&#xff0c;放到一个文件中&#xff0c;文件以“序号 姓名 课程名 ”命名&#xff0c;本试卷有三门课程&#xff0c;请根据不同的课程…

k8s训练营

一、linux命名空间和docker 1.linux的7大ns--------------ipc,net,pid,mnt.uts.user 查看linux的ns lsns查看不同类型的ns [rootmaster ~]# lsns -t netNS TYPE NPROCS PID USER COMMAND 4026531956 net 116 1 root /usr/lib/systemd/systemd --system --deserialize …

公司代码全局参数设置及其意义

在SAP中配置公司时&#xff0c;会配置公司的全局参数&#xff0c;但这些参数具体的意思是什么估计很多同学都搞不懂&#xff0c;我也找了下资料&#xff0c;贴出来供大家参考。 设置参数路径&#xff1a;IMG→财务会计→财务会计全局设置→公司代码的全球参数→输入全局参数 账…

C++Qt开发——Linguist语言家

Qt Linguist 简介 Qt提供了一款优秀的支持Qt C和Qt Quick应用程序的翻译工具。发布者、翻译者和开发者可以使用这款工具来完成他们的任务。 发布者&#xff1a;承担了全面发布应用程序的责任。通常&#xff0c;他们协调开发者和翻译者的工作&#xff0c;可以使用lupdate工具…

激光雷达的厮杀18年:西方“诸神黄昏”,东方“新王隐现”

鼻祖、发明家、神童、梦想家、特种兵和中国双星&#xff0c;激光雷达“诸神混战”&#xff0c;行业疯狂洗牌。 风云激荡中&#xff0c;每个人都在亲身见证历史。 2004年&#xff0c;美国发起DARPA挑战赛&#xff0c;无人车上路&#xff0c;汽车上首次出现激光雷达。 2010年之…

原型工具墨刀的使用

刚开始接触原型工具是大学时候了&#xff0c;大学参加大创的时候第一次接触并使用原型工具做了小程序项目原型。那时候是下载的客户端。 最近&#xff0c;又开始思考在用户沟通过程中为方便沟通&#xff0c;可以先自己用原型工具简单的设计一下先。 首先&#xff1a;网页版好用…

JavaScript流程控制-循环(循环(for 循环,双重 for 循环,while 循环,do while 循环,continue break))

目录 JavaScript流程控制-循环 循环 for 循环 执行过程&#xff1a; 断点调试&#xff1a; 案例一&#xff1a;求1-100之间所有整数的累加和 案例二&#xff1a;求1-100之间所有数的平均值 案例三&#xff1a;求1-100之间所有偶数和奇数的和 案例四&#xff1a;求1-10…

哈希(Hash) - 开散列/闭散列

文章目录&#xff1a;认识哈希哈希函数处理冲突的方法闭散列&#xff08;开放定址法&#xff09;开散列&#xff08;链地址法&#xff09;哈希表闭散列实现闭散列基本框架哈希表闭散列插入&#xff08;insert&#xff09;哈希表闭散列删除&#xff08;erase&#xff09;哈希表闭…

深度学习模型部署全流程-模型部署

往期回顾&#xff1a;模型训练 文章目录前言模型部署全流程1.推理框架2.onnx模型3.模型转换4.代码实现5.完整代码小结前言 在上一篇文章中详细讲述了模型训练的流程&#xff0c;这篇文章主要介绍模型部署的流程。模型部署通常指通过C/C语言能够把python框架训练好的模型跑起来…

【ROS】机械人开发一--树莓派安装ubuntu18.04

前言&#xff1a;安装了一天的树莓派系统&#xff0c;遇到了很多坑&#xff0c;这里将教程详细分享一下&#xff0c;方便大家快速的安装系统。 目录一、操作环境硬件软件二、资源下载链接三、具体步骤烧入修改镜像文件问题修改重启时间PC端使用xshell远程连接修改软件源安装ubu…

嵌入式软件调试(Debug)方法

嵌入式软件调试&#xff08;Debug&#xff09;方法1 问题定位和分析方法1.1 二分定位法1.2 数据流方法1.3 隔离法1.4 汇编法1.5 ABA法1.6 版本回溯确认法1.7 调试IO法2 调试注意事项3 典型问题类型1 问题定位和分析方法 1.1 二分定位法 方法阐述&#xff1a; 在任务中或者可能…

Redis介绍与下载

初识Redis Redis介绍 由Salvatore Sanfilippo写的key-value存储系统&#xff0c;是跨平台的非关系型数据库 Redis通常被称之为数据结构服务器&#xff0c;因为值(value)可以是字符串、哈希、列表、集合和有序集合等类型 Redis是完全开源的遵守BSD协议&#xff0c;是一个高性能的…

看着别人月入过万,30岁想转入做软件测试,有什么难度?

我见过很多30岁转行软件测试成功的&#xff0c;也见过软件测试转行失败的。 说实话&#xff0c;30岁转行需要付出比一般人更加多的努力。 并且每一步的路都不能走偏。 30岁了&#xff0c;转行肯定不像才毕业的小年轻那么容易&#xff0c;毕竟你转行要跟社会上已经从事过几年的…

Android移动应用开发之使用room实现数据库的增删改查

文章目录前言核心代码前言 我们直接开门见山&#xff0c;展示一下效果&#xff1a; 数据库的插入和查询&#xff1a; 数据库的修改和查询&#xff1a; 可以看到id为23的数据发生了修改。 删除一条数据&#xff1a; 可以看到id为23的数据被删除了 删除全部数据&#xff1…

Sedex验厂有证书吗?

【Sedex验厂有证书吗&#xff1f;】 SEDEX 是一个全球性的会员制组织&#xff0c;旨在帮助企业在负责任商业中去繁存简&#xff0c;携手共进。买家、供应商和审计员可以在平台上快速轻松地储存、共享和报告信息。 SMETA&#xff08;Sedex Members Ethical Trade Audit&#xff…

日本知名汽车零部件公司巡礼系列之株式会社111

株式会社111 业务内容&#xff1a; . 在所有领域的零件缴纳各种都有相应的实际业绩 &#xff08;例&#xff09;OA器械、光学器械、汽车其他运送器械、医疗器械、各种制造装置零件、机器人相关零件、能源相关零件、航空相关零件等 广泛应对各种材料产品 铁、铝、不锈钢、合…