看悬疑推理小说,比较重要的就是理清人物关系。所以在练习networkx库时,我选择了之前看的《清明上河图密码》。然后在练习过程中,遇到了中文标签无法显示的问题(在此记录解决方法)。

创建词频文件,筛选主要人物

import os
import jieba
os.chdir("F:\\book")def get_text(filepath):f = open(filepath,'r',encoding="utf-16")text = f.read()f.close()return textdef word_freq(filepath,text,topn):words = jieba.lcut(text.strip())counts = {}for word in words:if len(word) ==1:continuecounts[word] = counts.get(word,0)+1items = list(counts.items())items.sort(key = lambda x:x[1],reverse=True )f = open(filepath[:-4]+'_词频.txt','w')for i in range(topn):word , count = items[i]f.writelines("{}\t{}\n".format(word,count))f.close()filepath = "清明上河图密码.txt"
text = get_text(filepath)
word_freq(filepath,text,50)

从词频文件中筛选出主要人物“墨儿,赵不尤,瓣儿,宋齐,董谦,赵不弃,曹喜,饽哥,康潜,阿慈,何涣”

绘制社交关系网络图

import os
import networkx as nx
import matplotlib.pyplot as plt
import matplotlibos.chdir("F:\\book")def get_text(filepath):f = open(filepath,'r',encoding="utf-16",errors = "ignore")text = f.read()f.close()return textdef get_relation(text):Names = "墨儿,赵不尤,瓣儿,宋齐,董谦,赵不弃,曹喜,饽哥,康潜,阿慈,何涣".split(",")relations = {}lst_para = text.split('\n')for s in lst_para:for name1 in Names:if name1 in s:for name2 in Names:if name2 in s and name1!=name2 and (name2,name1) not in relations:relations[(name1,name2)]=relations.get((name1,name2),0)+1return relationsdef relation_weight(relations):max_relation = max([v for k,v in relations.items()])relations = {k:v/max_relation for k,v in relations.items()}return relationsdef get_networkx(relations):matplotlib.rcParams['font.sans-serif']=['SimHei']plt.figure(figsize=(15,15))G = nx.Graph()for k,v in relations.items():G.add_edge(k[0],k[1],weight = v)elarge = [(u,v) for (u,v,d) in G.edges(data=True) if d['weight']>0.6] #筛选权重大于0.6的边emidle = [(u,v) for (u,v,d) in G.edges(data=True) if (d['weight']>0.3 and d['weight']<=0.6)]esmall = [(u,v) for (u,v,d) in G.edges(data=True) if d['weight']<=0.3]pos = nx.spring_layout(G)nx.draw_networkx_nodes(G,pos,alpha=0.8,node_size=800)nx.draw_networkx_edges(G,pos,edgelist=elarge,width=2.5,alpha=0.9,edge_color='g')nx.draw_networkx_edges(G, pos, edgelist=emidle, width=1.5, alpha=0.6, edge_color='y')nx.draw_networkx_edges(G, pos, edgelist=esmall, width=1, alpha=0.4, edge_color='b',style='dashed')nx.draw_networkx_labels(G,pos,font_size=12)plt.axis("off")plt.title("《清明上河图密码》主要人物社交关系网络图")plt.show()filepath = "清明上河图密码.txt"
text = get_text(filepath)
relations=get_relation(text)
relations = relation_weight(relations)
get_networkx(relations)

过程相关问题

中文标签无法显示
一开始是选择添加 Fontproperties='SimHei’
但这样之后只有title成功显示,标签还是格子
最后 选择在前面添加 matplotlib.rcParams[‘font.sans-serif’]=[‘SimHei’]
问题解决
matplotlib.rcParams详细可见 https://blog.csdn.net/qq_27825451/article/details/81630839

(解决中文标签无法显示问题)Networkx绘制《清明上河图密码》主要人物社交关系网络图相关推荐

  1. 冶文彪 - 清明上河图密码(2015年2月22日)

    <清明上河图密码> 作 者:冶文彪 译 者: 系 列: 出 版:读客图书 北京联合出版公司 字 数:586千字 阅读完成:2015年2月22日 转载于:https://www.cnblog ...

  2. 《清明上河图密码4》:5星。严重剧透。依旧是细节+推理的双绝。隐隐看到有敌国的间谍盗窃经济地图、劫持手工业顶尖人才。...

    依旧非常精彩.依旧是细节+推理的双绝. 本期是"作绝张用"的探案故事.张用是个对世界充满好奇的理工男,熟悉当时的手工业的各个门类的制造细节,又能像福尔摩斯一样从细节中看出许多事情来 ...

  3. python给图片加滤镜的方程_清明节来了,我们用Python给《清明上河图》加了个滤镜...

    原标题:清明节来了,我们用Python给<清明上河图>加了个滤镜 导读:过几天就是清明节了.传统节日,特别是一个放假的传统节日,我觉得有必要安排一下.最近在研究查找表以及滤镜的实现,正好赶 ...

  4. 商汤“变法”:推中小学AI教材,mini自驾车,要打造AI时代的「清明上河图」...

    作者 | 阿司匹林 出品 | AI科技大本营(ID:rgznai100) 2019 年的进度条已经近半,这次商汤带来了一场令人"眼花缭乱"的发布会,一口气推出了覆盖五大行业的 11 ...

  5. 暖科技激活清明上河图,井贤栋:里面有最美的数字中国

    小蚂蚁说: 9月20日,在技术大咖云集的ATEC主论坛上,一卷古画穿越千年"活"了:疏林薄雾中,几个少年早起采集绿色能量:沿河的街道上已是一片喧杂,来来往往的行人中,有带着蓝色二维 ...

  6. 国宝《清明上河图》让日本人陶醉

    北宋名家张择端的作品<清明上河图>,无疑是"中国第一画".几乎没有人能够准确估算出它的价值,称为"镇国之宝"也不会过份. 我第一次见到<清明上 ...

  7. 我们如何通过 AI 模拟实现属于自己的清明上河图?

    作者 | 李秋键 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 我们知道清明上河图是我国国画的代表作之一,是中国十大传世名画 之一.为北宋风俗画 ,北宋画家张择端 仅见的存世精品,属国 ...

  8. 暖科技激活《清明上河图》,感受数字技术下的生活之美

    9月20日,杭州云栖大会-蚂蚁金服ATEC主论坛上,一副融入了现代数字技术的<清明上河图>呈现会场,一副北宋时期的传奇名画被"暖科技"激活. 泛舟之上,围桌前的几位少年 ...

  9. 名画50 张择端《清明上河图》

    张择端(1085-1145),字正道.汉族,琅邪东武(今山东诸城)人.北宋著名画家.自幼好学,早年游学汴京(今河南开封),后习绘画.宋徽宗时供职翰林图画院,专工界画宫室,尤擅绘舟车.市肆.桥梁.街道. ...

  10. 名画182 仇英《清明上河图》

    <清明上河图>是明代画家仇英创作的一幅重彩风俗画作品,现收藏于辽宁省博物馆.现存世作品<清明上河图>有多本传为仇英所作,除此卷外,另有青州市博物馆藏本,台北故宫博物院藏本,以及 ...

最新文章

  1. Android onAttach 的使用
  2. MPLS的几种备份方式——Vecloud
  3. Pycharm中配置Pyflink
  4. 在PEA上海做演讲主题:大型、高负载网站架构和应用初探
  5. 360云盘直链解析PHP,360云盘分析直链解析
  6. 5. PHP APC APCu 安装使用
  7. Oracle 动态视图3 V$SESSION
  8. 视频教程-【孙伟】网页设计(切图)视频教程-UI
  9. 打印机驱动开发,初步了解
  10. Spark 学习路线
  11. 手机照片局部放大镜_往事洗照片
  12. 视频教程 | 与程序员进行高效沟通,三分钟带你掌握Zeplin
  13. IPV6地址数据库导出
  14. [Kerberos基础]-- kerberos认证原理---讲的非常细致,易懂
  15. Android studio实现番茄钟
  16. html图片自动适应窗口大小,使用CSS自动调整浏览器大小的图片大小
  17. 罗德里格斯(Rodrigues)旋转公式及其推导
  18. PDF内存太大怎么压缩?三个方法教你如何压缩PDF文件
  19. 软件加密技术和注册机制 ---- 加密一
  20. 陈宁:破茧成蝶16年,一位80后女企业家的经营智慧

热门文章

  1. 【缺陷检测】基于区域生长算法实现对焊接孔隙检测matlab源码
  2. 收藏级!运营人必备2021全年热点营销日历
  3. android 手机本地目录,Android系统的手机文件夹目录详解
  4. LM2596电源降压调整器(150KHz,3A)020
  5. 知识竞赛中如何按抢答器才能最先抢到
  6. 指数加权移动平均详解 附代码实现(全网之最)
  7. 在 React 中构建一个可拖动的滑块
  8. python----------基于TCP的交互式游戏设计
  9. war 包的解压与打包
  10. 电机扭矩计算公式T=9550*P/n