当前位置: 首页 > ai >正文

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

from pyvis.network import Network
import networkx as nx
import pandas as pd
import os# 修复模板路径
from pyvis import network as net_moduleos.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.xdnf.cn/news/8195.html

相关文章:

  • 一次Java Full GC 的排查
  • Python应用“关键字”初解
  • C++学习:六个月从基础到就业——多线程编程:线程池实现
  • 101个α因子#25
  • 6.12.有向无环图描述表达式
  • 《洞察因果本质:解锁智能体大模型精准预测的底层逻辑》
  • Java原子类的实现原理 CAS的使用以及缺陷
  • Python unittest
  • Windows逆向工程提升之IMAGE_SECTION_HEADER
  • 解决androidstudio不能识别夜神模拟器的问题
  • 前端 git仓库
  • 蜂鸣器模块
  • Java单例模式终极指南:从原理到防御性编程
  • 在线教育系统源码开发新趋势:白板教学、多端适配与智能组卷机制解读
  • CESM 运行环境搭建实战:Linux 基础、编译体系与 Machine File 配置
  • Java-System工具类深度解析
  • Elabscience CD161/NK1.1 抗体 [PK136]:肿瘤免疫与 NK 细胞活化研究新工具!
  • 灰度矫正算法详解【Halcon】:线性光照不均的处理方法【附代码下载】
  • DAY33
  • CRichEditCtrl 控件实现日志输出
  • 深入解析JMM:Java内存模型与并发编程
  • 2025-05-22 学习记录--Python-函数
  • 使用docker compose部署dify(大模型开发使用平台)
  • DV通配符和OV通配符区别?如何选择?
  • hicFindTADs生成的domains.bed文件解析
  • Android --- CopyOnWriteArrayList 的使用场景及讲解
  • 技术篇-2.5.Matlab应用场景及开发工具安装
  • DDR5和LPDDR5的CA采样时刻对比,含DDR5的1N/2N模式
  • JDK8中的 Stream流式编程用法优化(工具类在文章最后)
  • ollama接口配合chrome插件实现商品标题和描述生成