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

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

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

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

1. 人物关系表

qshq.txt

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

1. 效果图如下

字数太多,很乱,需要对标签进行自适应下:

标签自适应效果图如下:

添加node颜色及边缘颜色,效果图如下:

2. 优化

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

  • 还可以对主角进行标签颜色及大小区分:

  • 节点发散

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

3. 源码

# python plot_qshc.py
# 对群山回唱人物关系图谱进行绘制import sysimport matplotlib.pyplot as plt
import networkx as nxprint(sys.getdefaultencoding())
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsenodes = []
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

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

  1. 《追风筝的人》(卡勒德·胡赛尼 ) 读书笔记

    人的一生总有那么一件或几件我们永远无法说出口的秘密,因为那隐藏着我们最无耻的愧疚,最卑鄙的懦弱,或者最悔恨的伤害. <追风筝的人>里,哈桑是追风筝的人.但我感觉,每个人都是追风筝的人.哈桑 ...

  2. 《追风筝的人》卡勒德·胡赛尼著小说成长的故事

    2019独角兽企业重金招聘Python工程师标准>>> 开始很普通甚至你会感觉到无内容单调,但是随着时间的推移,阅读的深入慢慢的你会爱上这本书!非常值得读. 转载于:https:// ...

  3. 《追风筝的人》- [美] 卡勒德·胡赛尼

    美句摘抄: https://book.douban.com/review/4944503/ 为你,千千万万遍 (最经典的就是这句了) 许多年过去了,人们说陈年旧事可以被埋葬,然而我终于明白这是错的.因 ...

  4. [读书笔记-1] 卓有成效的管理者(彼得.德鲁克)

    [读书笔记] 卓有成效的管理者(彼得.德鲁克) 来源:http://blog.csdn.net/KongDong 作者:fasiondog 此书最早出版于1966年,我还没出生,PC也还没出现,知识分 ...

  5. Python + Neo4j(安装)可视化分析漫威十年人物关系图谱

    目录 1 数据爬取 1.1 漫威人物关系图谱网站 1.2 爬取人物关系数据 2 Neo4j的安装及服务启动 2.1 Neo4j下载安装 2.2 开启Neo4j服务 3 数据准备 3.1 加入列名 3. ...

  6. 【读书笔记】用Python获取A股行情数据的4种方法

    本人大三在校小学渣一枚,非金融专业,也从来没有过股票期货等金融产品的投资经验,但最近收到了清华出版社赠送的<深入浅出Python量化交易实战>一书,因为平时对数据科学和机器学习都比较感兴趣 ...

  7. Python来袭,教你用Neo4j构建“复联4”人物关系图谱!没有剧透!【文末赠书】...

    讲技术之前先引个好玩的热点话题,带你与时代接轨~ 漫威系列电影<复仇者联盟4>上映 你去看了吗? 小编就盼着周末去好好享受 谁剧透,跟谁急! 复仇者联盟 之 绝对不剧透 漫威英雄们为了不让 ...

  8. 流畅的python读书笔记-第一章Python 数据模型

    第一章 python数据类型 1 隐式方法 利用collections.namedtuple 快速生成类 import collectionsCard = collections.namedtuple ...

  9. python基础教程读书笔记_《Python基础教程》读书笔记10

    模块 使用 dir dir 函数可以将对象的所有属性(以及模块的所有函数.类.变量等)列出. >>> import copy >>> dir(copy) ['Err ...

  10. 读书笔记-流畅的python(1-6章)

    前言:这正是本书的主要目的:着重讲解这门语言的基本惯用法,让你的代码简洁.高效且可读,把你打造成熟练的 Python 程序员. 自己总结学习作为输出,很多为了节省时间只是复制粘贴,不具有广泛意义 第一 ...

最新文章

  1. Firefox 插件:鲜味 del.icio.us,和朋友分享你的收藏
  2. 2012-2013年下学期计划
  3. [JSP暑假实训] 一.MyEclipse安装及JAVA基础知识
  4. Linux 下禅道和 SVN、GIT 集成插件发布
  5. 凉茶里偷掺消炎药 广东两名凉茶铺经营者领刑
  6. 当深度学习走进高考考场,会发生什么!!
  7. PixelFormat 枚举
  8. Myeclipse包变成文件夹
  9. python处理excel表格-Python读写Excel表格(简单实用)
  10. Swf Decrypt详解
  11. 【备忘】最新区块链开发入门到精通视频教程下载
  12. matlab绘制频谱图代码,用MATLAB实现函数的频谱图
  13. mac怎么用ntfs硬盘 NTFS移动硬盘怎么在mac上使用
  14. Blender简单建模
  15. Android之自定义一个可播放某一时间段的音乐播放器
  16. vue2中的watch监听
  17. 凉凉夜色为你思念成河
  18. CornerNet: Detecting Objects as Paired Keypoints 论文笔记
  19. 【829】【05参考工具书的使用】
  20. JAVA接入讯飞离线合成语音

热门文章

  1. 如何手动开启Windows远程桌面服务
  2. java作品欣赏_[Java教程]推荐25个强大的 jQuery 网页布局设计作品欣赏
  3. 一个聚合搜索网站——老马知搜
  4. spring boot 上传视频demo
  5. java按顺序生成编号_Java生成有规则的编号
  6. 服务器电脑的作用,什么是wins服务器及其作用 -电脑资料
  7. C语言指针理解(一)
  8. 微信小程序如何使用SCSS
  9. mailru邮箱下载_Mail.Ru邮箱ios客户端下载|Mail.Ru邮箱iphone/ipad版下载 6.2 - 跑跑车苹果网...
  10. 别在让你的 await Streaking 了