【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!

代码和示例数据下载

前言

在这篇文章中,我们将会可视化 《七版方剂学》 的药材的关系,我们将使用Python制作节点和边的数据,然后在Gephi中绘制出方剂的网络图。

Gephi是一个专门用于构建网络图的工具,只要你能提供节点和边的数据,你就可以绘制一个漂亮的网络图。

本文用Python实现了一个可复用的函数,用于输出节点和边的数据。

结果预览

每个药材对应一个节点。

将各个药材的关系展现出来,我们可以很直观的看到那些药材可能会被用在一起。

边越粗,代表被用在一起的频次越高。

在这里插入图片描述

利用Python制作“节点”和“边”的数据

在我们的用处方和药物信息_构建节点和边.py这个代码文件中,实现了一个函数叫generate_graph,本文将使用这个函数可视化 《七版方剂学》 的方剂。

有了这个函数,读者也可以很方便地针对特定的疾病的方剂数据进行可视化。

你只需要传入两个参数:

  1. 处方数据路径
  2. 药名药味药性数据路径

即可输出用于构建网络图的节点的文件。

下面是调用本人实现的函数的演示程序的代码,请在上文下载本文的附带的数据和代码来运行。
在这里插入图片描述
运行完毕,我们将会得到如下两个文件:

  • 示例处方数据_edge.csv
  • 示例处方数据_node.csv

分别代表边和节点。
在这里插入图片描述

利用Gephi构建网络图

步骤1. 打开Gephi


你会看到如下图

在这里插入图片描述

步骤2. 打开 “边” 文件

点击“打开图文件”,选择红色方框中的edge.csv为后缀的数据。

在这里插入图片描述



打开“边”文件后,你会看到乱码,不必惊慌。
在这里插入图片描述



点开字符集,寻找GBK,在博主的版本中,GBK位于UTF-8的上方。(国内常用两种编码:UTF-8和GBK)
在这里插入图片描述



设置完成!,字符串都正常显示了,可直接点击“下一步”,还有“完成”。在这里插入图片描述



选择红色方框中的,添加到现在的工作区
在这里插入图片描述

然后,我们的“边”数据就导入完成了。

步骤3. 打开“节点”文件

接下来,让我们导入节点文件。
在这里插入图片描述



点开后缀为node.csv的文件
在这里插入图片描述



像刚才打开边的文件一样,我们要选择GBK编码,然后仍然是直接点“下一步”,还有“完成”,“添加到工作区”。

在这里插入图片描述



步骤4. 得到原始网络图

经过导入数据,我们得到了原始的网络图(如下所示)。
在这里插入图片描述



步骤5. 指定节点颜色

且看左上角,让我们来按照药性,在本文的节点数据中为yaoxing这一列,指定节点的颜色。
在这里插入图片描述



点击应用当前设置的颜色后,我们可以看到下图中网络图发生的变化。
在这里插入图片描述



步骤6. 指定布局

我们这个演示中,使用Force Atlas

在这里插入图片描述
在这里插入图片描述



运行布局后,网络图变成了动态的版本。
在这里插入图片描述

步骤7. 显示节点标签(药名)

在这里插入图片描述



因为默认的字体不支持中文,所以,我们会看到如下场面。
在这里插入图片描述



跟随红色方框,点击Arial Bold,再设置图中的字体。
在这里插入图片描述



成功显示各个节点对应的药名
但是没有颜色。
在这里插入图片描述



跟随红色方框,设置标签的颜色
在这里插入图片描述



设置成功
现在我们的标签有了颜色。但是你觉得太紧凑了?请看下文。

在这里插入图片描述

为了避免标签颜色和边的颜色重叠,你可以取消掉下图的红色方框中的内容。

在这里插入图片描述

步骤8. 设置斥力强度(增加节点间的间隔)

看图中左侧,本文直接将斥力强度设置到了10000。可以发现网络图不再紧凑到一团。

在这里插入图片描述

大功告成!

现在我们有了一个漂亮的,动态的网络图。我们可以很直观的看到方剂之间的关系,以及它们的药性。

在这里插入图片描述

使用网络图

我们可以使用ctrl + f,快速搜索对应的药材名称,下面以麻黄为例。
在这里插入图片描述

让我们把鼠标挪到麻黄上面,我们就能发现处方中和麻黄相关的药物。(小技巧:ctrl + 鼠标滚轮,可以调整鼠标指针的判定点大小)

我们的处方数据中包含麻黄汤,自然,我们可以在下图中看到麻黄 桂枝 杏仁 炙甘草

边越粗,代表一同出现的频次越高。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GRACE:梯度引导的可控检索增强基于属性的生成

在本文中,我们提出通过梯度引导的可控检索(GRACE)来增强基于属性的生成,考虑到目标属性(见图1)。具体来说,我们训练一个鉴别器来计算给定上下文的属性分布。我们构建了一个检索库,存…

MySQL--分组查询获取每组最新的一条数据(group by)

业务场景: 最近项目中迭代一个旧的功能,再原有的设计上进行功能拓展(因成本等原因,不考虑项目重构),其中设计到了这么一个场景,同一个业务 ID 在同一张表中有 N 条数据,需要查询出最…

mac打开exe文件的三大方法 mac怎么运行exe文件 mac打开exe游戏 macbookpro打开exe

exe文件是Windows系统的可执行文件,虽然Mac系统上无法直接打开exe文件,但是你可以在Mac电脑上安装双系统或者虚拟机来实现mac电脑上运行exe文件。除了这两种方法之外,你还可以在Mac电脑上使用类虚拟机软件打开exe文件,这三种方法各…

LabVIEW提升舱救援通讯监测系统

LabVIEW提升舱救援通讯监测系统 随着科技的进步,煤矿救援工作面临着许多新的挑战。为了提高救援效率和安全性,设计并实现了一套基于LabVIEW的提升舱救援通讯监测系统。该系统能够实时监控提升舱内的环境参数和视频图像,确保救援人员和被困人…

web 课程

文章目录 格式图片超链接书签链接表格例子横跨束跨 格式 <br /> <br/> #换行图片 <img> 标签是用于在网页中嵌入图像的 HTML 标签&#xff0c;它有一些属性可以用来控制图像的加载、显示和交互。以下是对 <img> 标签常用属性的详细介绍&#xff1a;…

问了 Gemini 1.5 Pro 五个问题,找到了初遇ChatGPT的感觉

一个月前&#xff08;2月15日&#xff09;&#xff0c;Sora和 Gemini 1.5 同时推出&#xff0c;这个故事很多人都听过了&#xff0c;Google 被冠以 AI 界汪峰的名头。 人们纷纷震惊于 Sora 的强大&#xff0c;讨论 Sora 是不是世界模型。而 Gemini 1.5 的第一个模型 Gemini 1.…

2.26回顾章节主体线索脉络,课程要求(评分)

3)翻译程序、汇编程序、编译程序、解释程序有什么差别&#xff1f;各自的特性是什么&#xff1f; 翻译程序是指把高级语言源程序翻译成机器语言程序&#xff08;目标代码&#xff09;的软件。 翻译程序有两种&#xff1a;一种是编译程序&#xff0c;它将高级语言源程序一次全部…

Java -- 异常

异常概念 异常是程序在运行期间发生的不正常的事件, 它会打断指令的正常执行流程.   设计良好的程序应该在异常发生时提供处理这些不正常事件的方法, 使程序不会因为异常的发生而阻断或产生不可预见的结果.    Java语言使用异常处理机制为程序提供了异常处理的能力. 异常分…

Ubuntu 如何安装 Beyond Compare?

Ubuntu20.04安装Beyond Compare 4.3.7 一、官网下载方式一&#xff1a;方法二&#xff1a;使用 .deb 包安装 二、安装相关依赖和bcompare三、破解常见错误解决方法 ) 文件比较工具Beyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件…

Docker 学习笔记一

一、什么是docker Docker 是一个基于轻量级虚拟化技术的容器&#xff0c;整个项目基于Go语言开发&#xff1b;Docker是一个C/S架构&#xff0c;后端众多模块各司其职&#xff0c;docker的daemon是运行在主机上通过client可以进行通信。 docker 由三部分组成&#xff1a;镜像(…

51单片机系列-单片机定时器

&#x1f308;个人主页&#xff1a;会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 软件延时的缺点 延时过程中&#xff0c;CPU时间被占用&#xff0c;无法进行其他任务&#xff0c;导致系统效率降低&#xff0c;延时时间越长&#xff0c;该缺点就越明显&…

力扣--最小覆盖子串--双端队列+滑动窗口

滑动窗口思路&#xff08;双端队列实现&#xff09;&#xff1a; 可以参考一下&#xff1a;力扣hot8---滑动窗口-CSDN博客以及力扣hot9---滑动窗口-CSDN博客。 使用滑动窗口有以下几个步骤&#xff1a;初始化双端队列&#xff08;将s的前t_len个元素入队&#xff0c;此时检验是…