【数据可视化】使用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://xiahunao.cn/news/2870059.html

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

相关文章

RTC的Google拥塞控制算法 rmcat-gcc-02

摘要 本文档描述了使用时的两种拥塞控制方法万维网(RTCWEB)上的实时通信;一种算法是基于延迟策略,一种算法是基于丢包策略。 1.简介 拥塞控制是所有共享网络的应用程序的要求互联网资源 [RFC2914]。 实时媒体的拥塞控制对于许…

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

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

银行合规线上知识竞赛活动方案

合规知识大闯关 作为全国竞赛氛围预热项目,组织市县中心、代理网点人员参与合规知识大闯关答题。 1.建立线上答题平台,参与人通过手机、电脑等方式,填写个人基本信息登录。 2.答题平台在题库中随机抽取试题。 3.参与人在出现第一次答错后&…

Android 开发 地图 polygon 显示信息

问题 Android 开发 地图 polygon 显示信息 详细问题 笔者进行Android项目开发,接入高德地图绘制区域后,需要在指定区域(位置)内显示文本信息,如何实现 实现效果 解决方案 代码 import com.amap.api.maps.model.T…

【Linux系列】命令行参数形式及其应用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

数据结构的概念大合集02(线性表)

概念大合集02 1、线性表及其逻辑结构1.1 线性表的定义1.2 线性表的基本操作 2、线性表的顺序存储结构2.1 顺序表 3、线性表的链式存储3.1 链表3.1.1 头结点(头指针),首指针,尾指针,尾结点3.1.2 单链表3.1.3 双链表3.1.…

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…

重新认识BIO、NIO、IO多路复用、Select、Poll、Epollo它们之间的关系

目录 一、背景 二、名词理解 (1)BIO (2)NIO (3)IO多路复用 (4)Select、Poll、Epollo 三、他们之间的关系总结 一、背景 最近又在学习网络IO相关知识,对我们常说的…

C++中的friend关键字

C中的friend关键字允许其他类或函数访问私有和受保护成员。使用friend是一种破坏封装的做法,但在某些情况下,它提供了必要的灵活性。 friend函数 定义:允许一个普通函数访问类的私有(private)和受保护(prot…

Android FrameWork 学习路线

目录 前言 学习路线: 1.基础知识 2、AOSP 源码学习 3. AOSP 源码编译系统 4. Hal与硬件服务 5.基础组件 6. Binder 7. 系统启动过程分析 8. 应用层框架​编辑 9. 显示系统 10. Android 输入系统 11. 系统应用 前言 Android Framework 涉及的行业相当广…

Unity2019.2.x 导出apk 安装到安卓Android12+及以上的系统版本 安装出现-108 安装包似乎无效的解决办法

Unity2019.2.x 导出apk 安装到安卓Android12及以上的系统版本 安装出现-108 安装包似乎无效的解决办法 导出AndroidStudio工程后 需要设置 build.gradle文件 // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAINbuildscript {repositor…

【数据结构】二叉树OJ题(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

android studio 连接mumu模拟器调试

1、打开mumu模拟器 2、在Android Studio 中 控制台 cd 到 sdk 目录下 platform-tools 文件夹,有一个adb.exe 可运行程序 一般指令: adb connect 127.0.0.1:7555 但是这个执行在window环境下可能会报错 解决方法是在 adb 之前加 ".\", 问题…

nRF52832——内部温度传感器与随机数产生

nRF52832——内部温度传感器与随机数产生 内部温度传感器温度传感寄存器温度传感器电气特征温度传感器库函数编程 随机数产生器随机数发生器寄存器随机数发生器库函数编程库函数使用流程RNG 工程搭建使用 内部温度传感器 在 nrf52xx 系列芯片内部,包含一个内部温度…

IDEA创建Sping项目只能勾选17和21,没有Java8?

解决办法: 替换创建项目的源 我们只知道IDEA页面创建Spring项目,其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。将https://start.spring.io/或者http://start.springboot.io/替换为 https://start.aliyun.com/

使用 Python 编写程序保护您的眼睛

眼睛,是心灵的窗户,生活在数字时代的我们,眼睛首当其冲地承受冲击。盯着电脑屏幕成为我们日常工作和学习的一部分,导致用眼过度。那如何减少对眼睛的伤害,应该如何保护眼睛? 用眼应控制时间,自…

C语言字符函数和字符串函数详解

Hello, 大家好,我是一代,今天给大家带来有关字符函数和字符串函数的有关知识 所属专栏:C语言 创作不易,望得到各位佬们的互三呦 一.字符函数 在C语言中有一些函数是专门为字符设计的,这些函数的使用都需要包含一个头文…

如何用人工智能实现客户服务营销?实用指南与关键技巧一网打尽

在不断发展的营销领域,创意是成功营销活动的生命线。火花点燃兴趣,吸引受众,推动参与。但是,如果有一种方法可以利用技术来提升创意,那会怎样呢?生成式人工智能(Generative AI)是一种…

数据结构与算法----复习Part 16 (并查集)

本系列是算法通关手册LeeCode的学习笔记 算法通关手册(LeetCode) | 算法通关手册(LeetCode) (itcharge.cn) 目录 并查集(Union Find) 基于数组实现的快速查询并查集 基于森林实现的快速合并并查集 路径…

51单片机-AT24C02(I2C总线)

目录 一,介绍及元件工作原理 7.时序结构(重要) 8.i2C总线数据帧(重要) 二,应用 一,介绍及元件工作原理 1.元件介绍 2.存储器 3.地址总线和数据总线 地址总线只能一次选中一行 4.引脚及应用…