Python绘制新冠疫情的知识图谱

news2025/5/23 8:54:34
from pyvis.network import Network
import networkx as nx
import pandas as pd
import os

# 修复模板路径
from pyvis import network as net_module

os.environ["PATH"] += os.pathsep + os.path.dirname(net_module.__file__)

# 创建紧密连接图
g = nx.Graph()

# ========== 关键修复:统一关系字段 ==========
connect_matrix = [
    ("ACE2受体", "核酸检测", {"关系": "检测靶标", "发现时间": "2020-01"}),
    ("飞沫传播", "口罩防护", {"关系": "防护方式", "效率": "N95 95%"}),
    ("发热症状", "CT检查", {"关系": "诊断依据", "准确率": "88%"}),
    ("灭活疫苗", "科兴生物", {"关系": "研发生产", "有效率": "51%"}),
    ("Delta变异株", "R0值", {"关系": "传播能力", "数值": "5-8"}),
    ("核酸检测", "健康码", {"关系": "数据来源", "数据源": "检测结果"}),
    ("口罩防护", "公共卫生", {"关系": "政策要求", "政策": "强制佩戴"}),
    ("CT检查", "方舱医院", {"关系": "设备需求", "设备需求": "移动CT车"}),
    ("科兴生物", "WHO认证", {"关系": "国际认证", "时间": "2021-06"}),
    ("R0值", "封城措施", {"关系": "决策依据", "关联性": "0.8"}),
]

# 构建核心辐射层(保持不变)
g.add_node("SARS-CoV-2", size=50, color="#FF6F61", group="核心病毒")
core_df = pd.DataFrame({
    "核心节点": ["SARS-CoV-2"] * 6,
    "关联节点": ["ACE2受体", "飞沫传播", "发热症状", "核酸检测", "灭活疫苗", "Delta变异株"],
    "关系类型": ["病毒靶点", "传播途径", "临床表现", "诊断方法", "预防手段", "病毒演化"]
})

for _, row in core_df.iterrows():
    g.add_node(row["关联节点"], group=row["关系类型"], size=30)
    g.add_edge("SARS-CoV-2", row["关联节点"], title=row["关系类型"], width=3)

# ========== 修复后的连接代码 ==========
for src, tgt, rel in connect_matrix:
    # 确保所有节点都存在
    if not g.has_node(tgt):
        g.add_node(tgt, group="二级概念", size=25, color="#6B5B95")

    # 添加带关系的边
    g.add_edge(
        src,
        tgt,
        title=rel["关系"],  # 确保键存在
        **{k: v for k, v in rel.items() if k != "关系"}  # 其他属性
    )

# 环形连接部分保持不变
ring_connections = [
    ("健康码", "行程追踪", "基于"),
    ("行程追踪", "流行病学", "支撑"),
    ("流行病学", "R0值", "计算"),
    ("R0值", "封城措施", "影响"),
    ("封城措施", "方舱医院", "配套"),
    ("方舱医院", "CT检查", "需要"),
    ("CT检查", "发热症状", "诊断"),
    ("发热症状", "ACE2受体", "病理机制")
]

for i, (src, tgt, rel) in enumerate(ring_connections):
    g.add_edge(src, tgt, title=rel, color="#888" if i % 2 else "#444")

# 可视化配置和生成代码保持不变
net = Network(height="800px", width="100%", notebook=True)
net.from_nx(g)

net.set_options("""
{
  "physics": {
    "forceAtlas2Based": {
      "gravitationalConstant": -200,
      "centralGravity": 0.005,
      "springLength": 150,
      "avoidOverlap": 0.5
    },
    "minVelocity": 0.75,
    "solver": "forceAtlas2Based"
  },
  "nodes": {
    "scaling": {
      "min": 20,
      "max": 50
    }
  }
}
""")

output_path = "COVID19_Dense_Graph_Fixed.html"
net.show(output_path)
os.startfile(os.path.abspath(output_path))

效果如下,可进行物理效果的拉伸、旋转等:

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

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

相关文章

使用RUST在Arduino上进行编程(MacOS,mega板)

近年来,RUST成为了嵌入式编程的热门语言,本文通过实现(1)LED闪灯,以及(2)在console(终端)实现“Hello Rust World”两项功能来完成实操的入门。 深入学习可以参考RUST语言…

大模型微调与高效训练

随着预训练大模型(如BERT、GPT、ViT、LLaMA、CLIP等)的崛起,人工智能进入了一个新的范式:预训练-微调(Pre-train, Fine-tune)。这些大模型在海量数据上学习到了通用的、强大的表示能力和世界知识。然而,要将这些通用模型应用于特定的下游任务或领域,通常还需要进行微调…

OpenCv高阶(十六)——Fisherface人脸识别

文章目录 前言一、Fisherface人脸识别原理1. 核心思想:LDA与Fisher准则2. 实现步骤(1) 数据预处理(2) 计算类内散布矩阵 SW对每个类别(每个人)计算均值向量 μi:(3) 计算类间散布矩阵 SB(4) 求解投影矩阵 W(5) 降维与分类 3. Fish…

二分算法的补充说明

在上一节中我们简单介绍了二分算法,通过区分小于等于,大于或者小于,大于等于我们可以求出它们的边界值。 具体方法是先看一下要求哪里的边界值,分成两部分让如果求小于等于的右边界,我们根据条件让rightmid-1,leftmid…

java基础(api)

包: 导包,不同包的程序名相同。 但是要用两个的话可以这样子写: String String概述 String的常用方法 String使用时的注意事项 String的应用案例

VSCode推出开源Github Copilot:AI编程新纪元

文章目录 开源决策的背后GitHub Copilot的演进历程Copilot Chat核心功能解析1. 聊天界面集成2. 代码理解与生成3. 多文件编辑能力4. 智能代理模式 开源后的影响与展望对开发者的影响对AI编程工具市场的影响未来发展方向 如何开始使用GitHub Copilot结语相关学习资源 在AI编程助…

Mujoco 学习系列(四)官方模型仓库 mujoco_menagerie

mujoco 官方在 Github 上发布了一个他们自己整理的高质量的模型仓库,这个仓库是一个持续维护的项目,里面包含了目前市面上常见的人形机器人、机械臂、底盘等模型,对于初学者而言是一个非常好的学习资料,无论是想在仿真环境中尝试还…

代码走读 Go 语言 Map 的实现

序言 在日常的开发当中,我们一定离不开一个数据结构字典。不仅可以存储关联数据对,还可以在 O(1) 的时间复杂度进行查找。很久之前在 一篇文章带你实现 哈希表 介绍了相关的原理以及简单的实现。所以这篇文章中我们就不多赘述哈希表的原理,而…

PostgreSQL14 +patroni+etcd+haproxy+keepalived 集群部署指南

使用postgresql etcd patroni haproxy keepalived可以实现PG的高可用集群,其中,以postgresql做数据库,Patroni监控本地的PostgreSQL状态,并将本地PostgreSQL信息/状态写入etcd来存储集群状态,所以,patr…

数据结构知识点汇总

1、在数据结构中,随机访问是指能够直接访问任一元素,而不需要从特定的起始位置开始,也不需要按顺序访问其他元素。这种访问方式通常不涉及遍历。例如,数组(array)支持随机访问,你可以直接通过索…

基于YOLO11深度学习的变压器漏油检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】

文章目录 引言软件主界面源码目录文件说明一、环境安装(1)安装python(2)安装软件所需的依赖库 二、软件核心功能介绍及效果演示(1)软件核心功能(2)软件效果演示 三、模型的训练、评估与推理(1)数据集准备与训练(2)训练结果评估(3)使用训练好的模型识别 四、完整相关文件及源码下…

Python 包管理工具核心指令uvx解析

uvx 是 Python 包管理工具 uv 的重要组成部分,主要用于在隔离环境中快速运行 Python 命令行工具或脚本,无需永久安装工具包。以下是其核心功能和使用场景的详细解析: 一、uvx 的定位与核心功能 工具执行器的角色 uvx 是 uv tool run 的别名&a…

苍穹外卖05 Redis常用命令在Java中操作Redis_Spring Data Redis使用方式店铺营业状态设置

2-8 Redis常用命令 02 02-Redis入门 ctrlc :快捷结束进程 配置密码: 以后再启动客户端的时候就需要进行密码的配置了。使用-a 在图形化界面中创建链接: 启动成功了。 03 03-Redis常用数据类型 04 04-Redis常用命令_字符串操作命令 05 05-Redis常用命令…

AI工程师系列——面向copilot编程

前言 ​ 笔者已经使用copilot协助开发有一段时间了,但一直没有总结一个协助代码开发的案例,特别是怎么问copilot,按照什么顺序问,哪些方面可以高效的生成需要的代码,这一次,笔者以IP解析需求为例,沉淀一个实践案例,供大家参考 当然,其实也不局限于copilot本身,类似…

【竖排繁体识别】如何将竖排繁体图片文字识别转横排繁体,转横排简体导出文本文档,基于WPF和腾讯OCR的实现方案

一、应用场景 在古籍数字化、繁体文档处理、两岸三地文化交流等场景中,经常需要将竖排繁体文字转换为横排文字。例如: 古籍研究人员需要将竖排繁体文献转换为现代横排简体格式以便编辑和研究出版行业需要将繁体竖排排版转换为简体横排格式两岸三地交流中需要将繁体竖排文档转…

NFS服务器实验

实验要求 架设一台NFS服务器,并按照以下要求配置 1、开放/nfs/shared目录,供所有用户查询资料 2、开放/nfs/upload目录,为192.168.xxx.0/24网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload,其UID和GID均为210 3…

Java进阶之新特性

Java新特性 参考 官网:https://docs.oracle.com/en/ JDK5新特性 1.自动装箱与拆箱 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装类中。 自动拆箱的过程:每当需要一个值时&#xf…

AIGC工具平台-卡通图片2D转绘3D

本模块是一款智能化的2D转3D图像处理工具,能够将卡通风格的2D图片自动转换为高质量3D渲染模型,让平面图像焕发立体生机。借助先进的AI深度学习算法,该工具可以精准识别角色轮廓、光影关系、材质纹理等关键元素,自动生成逼真的3D形…

Java虚拟机 -方法调用

方法调用 方法调用静态链接动态链接案例虚方法与非虚方法虚方法(Virtual Method)非虚方法(Non-Virtual Method) 方法返回地址 方法调用 我们编写Java程序的时候,我们自己写的类通常不仅仅是调用自己本类的方法。调用别…

JMeter JDBC请求Query Type实测(金仓数据库版)

文章目的 在实际性能测试中,JMeter的JDBC Request组件常用于模拟数据库操作。但许多用户对Query Type参数的具体行为存在疑惑。 本文将以金仓数据库KingbaseES为例,通过实测验证每种Query Type的行为,帮助用户明确其使用场景和限制&#xff…