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

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

相关文章

攻防实战 | 记一次nacos到接管阿里云百万数据泄露

在某次攻防当中,通过打点发现了一台nacos,经过测试之后发现可以通过弱口令进入到后台,可以查看其中的配置信息 通过翻看配置文件,发现腾讯云的AK,SK泄露,以及数据库的账号密码。操作不就来了么,直接上云&am…

jmeter打开文件报异常无法打开

1、问题现象: 报错部分内容: java.desktop does not export sun.awt.shell to unnamed module 0x78047b92 [in thread "AWT-EventQueue-0"] 报错部分内容: kg.apc.jmeter.reporters.LoadosophiaUploaderGui java.lang.reflect.Invo…

多种智能搜索算法可视化还原 3D 魔方

2024/03/19:程序更新说明(文末程序下载链接已更新) 版本:v1.0 → v1.2 ① 修复:将 CLOSED 表内容从优先级队列中分离开来,原优先级队列作 OPEN 表,并用链表树隐式地代替 CLOSED 表,以…

macOS系统中通过brew安装MongoDB

Macos 修改目录权限: sudo chmod -R 777 你的文件夹 本文使用homebrew进行安装简单,因为从官网下载安装包并手动安装需要移动安装包到合适的目录下并配置环境变量等一大堆操作后才能使用数据库(若没有安装过brew请自行百度进行安装brew&am…

改进YOLOv8注意力系列六:结合SEAttention轻量通道注意力、ShuffleAttention重排特征注意力模块、SimAM无参数化注意力

改进YOLOv8注意力系列五:结合ParNetAttention注意力、高效的金字塔切分注意力模块PSA、跨领域基于多层感知器(MLP)S2Attention注意力 代码SEAttention轻量通道注意力ShuffleAttention重排特征注意力模块SimAM无参数化注意力加入方法各种yaml加入结构本文提供了改进 YOLOv8注…

SQL数据库和事务管理器在工业生产中的应用

本文介绍了关系数据库在工业生产中的应用以及如何使用事务管理器将生产参数下载到PLC,以简化OT/IT融合过程。 一 什么是配方(Recipe) 我们以一家汽车零件制造商的应用举例,该企业专业从事汽车轮毂生产制造。假设该轮毂的型号是“…

短视频矩阵系统技术交付

短视频矩阵系统技术交付,短视频矩阵剪辑矩阵分发系统现在在来开发这个市场单个项目来说,目前基本上已经沉淀3年了,那么我们来就技术短视频矩阵剪辑系统开发来聊聊 短视频矩阵系统经过315大会以后,很多违规的技术开发肯定有筛选到了…

Java开发从入门到精通(九):Java的面向对象OOP:成员变量、成员方法、类变量、类方法、代码块、单例设计模式

Java大数据开发和安全开发 (一)Java的变量和方法1.1 成员变量1.2 成员方法1.3 static关键字1.3.1 static修饰成员变量1.3.1 static修饰成员变量的应用场景1.3.1 static修饰成员方法1.3.1 static修饰成员方法的应用场景1.3.1 static的注意事项1.3.1 static的应用知识…

用Stable Diffusion生成同角色不同pose的人脸

随着技术的不断发展,我们现在可以使用稳定扩散技术(Stable Diffusion)来生成同一角色但不同姿势的人脸图片。本文将介绍这一方法的具体步骤,以及如何通过合理的提示语和模型选择来生成出更加真实和多样化的人脸图像。 博客首发地…

[C语言]一维数组二维数组的大小

对于一维数组我们知道取地址是取首元素的地址,二维数组呢,地址是取第一行的地址,sizeof(数组名)这里计算的就是整个数组的大小,&数组名 表示整个数组,取出的是整个数组的地址,显示的是数组的首元素 记…

javascript:void(0);用法及常见问题解析

文章目录 用法:常见问题解析:示例:用法补充:注意事项:替代方案示例:安全性考虑:替代方案建议:ES6语法替代:性能优化:最佳实践: 在 JavaScript 中&…

【双指针】算法例题

目录 二、双指针 25. 验证回文数 ① 26. 判断子序列 ① 27. 两数之和II - 输入有序数组 ② 28. 盛最多水的容器 ② 29. 三数之和 ② 二、双指针 25. 验证回文数 ① 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——差分进化算法(DE)

基于python语言,采用经典差分进化算法(DE)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作,目前已经成…

Docker简介与安装

简介 用来快速构建、运行、管理应用的工具简单说,帮助我们部署项目以及项目所依赖的各种组件典型的运维工具 安装 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \dock…

解决虚拟机Linux ens33 没有 IP 地址

解决方法: 先进入 root 模式 sudo su 查看目录 ls /etc/sysconfig 找到上述文件夹 ls /etc/sysconfig/network-scripts/ 用 vim 打开 ifcfg-ens33 这个文件(不都是这个名字,按这个方法找到这个文件就行) vim /etc/sysconfig/netw…

农业四情监测设备—全面、准确地收集农田环境数据

型号推荐:云境天合TH-Q3】农业四情监测设备是一种高科技的农田监测工具,旨在实时监测和管理农田中的土壤墒情、作物生长、病虫害以及气象条件。这些设备综合运用了传感器、摄像头、气象站等技术手段,能够全面、准确地收集农田环境数据&#x…

H264字节流编码格式

1.H264码流格式——字节流格式 字节流格式是大多数编码器,默认的输出格式。它的基本数据单位为NAL单元,也即NALU。为了从字节流中提取出NALU,协议规定,在每个NALU的前面加上起始码:0x000001或0x00000001(0…

Nodejs 第五十八章(大文件上传)

在现代网站中,越来越多的个性化图片,视频,去展示,因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传:将大文件切分成较小的片段(通常称为分片或块),然后逐个上传这…

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图,我下载的贴图地址为(牙膏盒贴图链接) 2. 打开3DsMax,创建一个长方体,设置长宽高分别为180、45、40毫米 打开材质编辑器,点击漫反射后的按钮 双击“位图” 将材质赋予长…

113 链接集10--ctrl+左键单击多选

1.ctrl+左键单击多选,单击单选 精简代码 <div class="model-list"><div@mousedown.prevent="handleClick(item, $event)"class="model-list-item"v-for="item in modelList":key="item.id":class="{ model-a…