基于pyecharts的《红楼梦》人物关系可视化

2023-11-18

《红楼梦》人物关系可视化

《红楼梦》是我国四大名著之一,也是高中生必读书目之一。同学们在阅读红楼梦的时候,是否有以下困惑?人物太多?人物关系太复杂?

我们今天尝试着用信息技术中的数据可视化手段,对《红楼梦》中的人物关系进行可视化呈现,来挖掘错综复杂的人物关系网背后,作者想要表达的信息。

最终效果



1. 创建简单关系图

from pyecharts import options as opts
from pyecharts.charts import Graph
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "C:/Users/Administrator/Desktop/pyecharts/"

#添加节点
nodes = [
   opts.GraphNode(name='贾宝玉'),
   opts.GraphNode(name='林黛玉'),
   opts.GraphNode(name='王夫人')]

#添加关系
links = [
    opts.GraphLink(source="贾宝玉", target="林黛玉",value="情人"),
    opts.GraphLink(source="贾宝玉", target="王夫人",value="母子")  ]

#生成关系图
c = (
    Graph()
    .add("", nodes, links,repulsion=4000,edge_label=opts.LabelOpts(is_show=True, position="middle", formatter="{c}"))
    .set_global_opts(title_opts=opts.TitleOpts(title="简单关系图"))

)
c.render("简单关系图.html")

注意事项:
第四行CurrentConfig.ONLINE_HOST后面的地址改为echarts.min文件所在的绝对地址,将反斜杠改为斜杠,student后面也要加斜杠。不设置此操作,网页无法展示关系图。

在这里插入图片描述
任务1:
运行代码,思考关系图的基础要素是什么?



2.创建人物关系图
如何从文件中读取人名和关系?
(1)读取文件的方法:

import csv
with open('name.csv') as f:
    reader = csv.reader(f)
    for line in reader:
            print(line[0])

输出结果:
在这里插入图片描述

(2)按行读取人名并添加到nodes列表中
使用append()方法将读取的人名添加到nodes列表中

nodes = []
with open('name.csv') as f:
    reader = csv.reader(f)
    for line in reader:
        nodes.append(opts.GraphNode(name=line[0]))

(3)按行读取关系并添加到links列表中
使用append()方法将读取的人名与对应的关系添加到links列表中

links=[]
with open('relation.csv') as f:
    reader = csv.reader(f)
    for line in reader:
              links.append(opts.GraphLink(
              source=line[0], target=line[1], value=line[2]))

任务2:
修改并整合代码,生成人物关系图



3.创建家族关系图
如何为人物添加家族属性?
第一步:为人物节点添加属性

 nodes.append(opts.GraphNode(name=line[0],category=line[1]))

第二步:创建家族属性category列表

category= [
   {'name':'贾家荣国府'},
   {'name':'贾家宁国府'},
   {'name':'史家'},
   {'name':'王家'},
   {'name':'林家'},
   {'name':'薛家'},
   {'name':'其他'}
    ]

第三步,生成关系图时加上category

c=(
    Graph()
    .add("", nodes, links, category,repulsion=4000, edge_label=opts.LabelOpts(is_show=True, position="middle", formatter="{c}"))
    .set_global_opts(title_opts=opts.TitleOpts(title="红楼梦人物家族关系图")))
c.render("红楼梦人物家族关系图.html")

任务3:
整合代码,生成家族关系图



4.可视化分析

  • 数量可视化:贾宝玉与林黛玉人物关系数量对比
  • 规模可视化:荣国府和宁国府人口规模对比
  • 颜色可视化:人物家族分布
  • 大小可视化:人物出场频次



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于pyecharts的《红楼梦》人物关系可视化 的相关文章

随机推荐

  • 数学期望、信息量、信息熵、相对熵、交叉熵

    1 数学期望 数学期望就是总体的均值 或者各项的加权平均 先看离散的情况 假设X为离散型随机变量 x1 x2 x3 xk为随机变量的所有可能取值 p1 p2 p3 pk为随机变量相应取值发生的概率 其中p1 p2 p3 pk 1 那么随机变
  • 安装gin失败或卡住,亲测有效!

    安装gin失败或卡住 亲测有效 本人基于最近学习完了go所有语法 对go框架进一步学习与实战 但第一步的安装就遇到了坑 也是坑了很久 网上很多的方法 但是都乱七八糟 最主要一点毛线用都没有 柳暗花明又一村 功夫不负有心人 还是让我找到了解决
  • 电阻噪声的基础知识和一个有趣的小测试

    作者 TI 专家 Bruce Trump 翻译 TI信号链工程师 Tom Wang 王中南 放大电路的噪声性能受到输入电阻和反馈电阻Johnson噪声 热噪声 的影响 大多数人似乎都知道电阻会带来噪声 但对于电阻产生噪声的细节却是一头雾水
  • PHP对二维数组里面的多字段进行排序

    PHP对二维数组里面的多字段进行排序
  • 500 G JAVA视频网盘分享(JEECG开源社区)

    500 G JAVA视频网盘分享 JEECG开源社区 涵盖从java入门到深入架构 Linux 云计算 分布式 大数据Hadoop ios Android 互联网技术应有尽有 转载 http blog csdn net zhangdaisc
  • 标识符、变量与赋值语句1

    2 2标识符 变量与赋值语句 2 2 1标识符 标识符就是一个名字 就好像我们每个人都有属于自己的名字 它的主要作用就是作为变量 函数 类 模块以及其他对象的名称 Python 中标识符的命名不是随意的 而是要遵守一定的命令规则 比如说 1
  • delete LEFT JOIN 的一个问题解决办法

    LEFT JOIN 的一个问题解决办法 今天在一个程序后台删除一个东西的时候 却出现了这个问题 Java代码 System Message MySQL Query Error User admin Time 2007 10 20 21 08
  • ubuntu18.04桌面卡住鼠标可以动 键盘失效

    大多数是在启动chrome 或者开机后几分钟内频繁操作 直接卡死 鼠标可以移动但是无法点击 视频播放有声音但画面卡住 键盘在显示界面上没有操作效果 我挂了一晚上还是这样 强制重启 crtl alt prtsc r e i s u b ubu
  • ts中定义类、类的继承、修饰符

    首先 简单介绍ES6的class类 class Foo constructor name age 实例前的构造函数 实例添加name age属性 this name name this age age getName 原型添加getName
  • linux查找postgre进程,postgresql数据库某一个进程占用大量CPU,问题排查详解

    postgresql某一个进程占用大量 CPU 问题排查 目前服务器cpu为4核 内存8G 1 查下是不是我们的业务SQL SELECT procpid START now START AS lap current query FROM S
  • Linux——在Linux系统上安装和启动MinIO

    Linux 在Linux系统上安装和启动MinIO 下载 MinIO 赋予它可执行权限 运行 优化 将 minio 添加成 Linux 的服务 使用 systemctl 启停 minio 下载 MinIO 使用以下命令 将 data 替换为
  • 经典卷积神经网络AlexNet原理详细介绍

    ImageNet Classification with Deep Convolutional Neural Networks 这篇文章的网络是在2012年的ImageNet竞赛中取得冠军的一个模型整理后发表的文章 作者是多伦多大学的Ale
  • Ogre引擎源码——资源之Skeleton

    Ogre引擎源码 资源之Skeleton 分类 OGRE 游戏开发 引擎开发 图形引擎 游戏引擎 2012 09 21 06 17 1231人阅读 评论 0 收藏 举报 引擎 animation vector binding pointer
  • Google C++编程规范 (中文版)

    点击下面的超级链接即可 Google 开源项目风格指南 C 风格指南 内容目录 0 扉页 0 1 译者前言 0 2 背景 1 头文件 1 1 Self contained 头文件 1 2 define 保护 1 3 前置声明 1 4 内联函
  • ubuntu2004 搜狗输入法

    按照这个帖子搞就行了 Ubuntu20 04LTS安装搜狗输入法
  • Qt中的C++技术 学习总结:(3)类型分类(Type Classification)技术

    设一个模板具有模板参数T 表示C 中的某种类型 有些情况下 随着T所取类型的不同 该模板会做不同的处理 在设计该模板时 我们需要了解T的具体信息 在编写一个具有模板参数T的类模板时 有时需要了解T所取类型的具体信息 以做不同的处理 这是一个
  • 使用二进制方式安装高可用k8s

    使用二进制方式安装高可用k8s 整个过程相对kubeadmin复杂 但好处是能真切了解到各组件 耐心按照步骤进行 有问题针对日志查解决办法即可 应用 版本 docker v20 10 7 kubernetes v1 20 15 Calico
  • DockerFile构建过程解析

    DockerFile构建过程解析 1 DockerFile内容基础知识 每条保留字指令都必须为大写字母且后面要至少跟随一个参数 指令按照从上到下 顺序执行 表示注释 每条指令都会创建一个新的镜像层并对镜像进行提交 2 Docker执行Doc
  • [架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架

    目录 前言 一 什么是ADMES 首先 需求是分层次的 其次 需求是有结构的 有维度的 再次 不同层次需求 不同维度需求之间可以相互转化 难点 经验积累 最终 标准化的ADMEMS需求矩阵 二 软架构前的需求理解 1 目标 2 时机 3 四
  • 基于pyecharts的《红楼梦》人物关系可视化

    红楼梦 人物关系可视化 红楼梦 是我国四大名著之一 也是高中生必读书目之一 同学们在阅读红楼梦的时候 是否有以下困惑 人物太多 人物关系太复杂 我们今天尝试着用信息技术中的数据可视化手段 对 红楼梦 中的人物关系进行可视化呈现 来挖掘错综复