R语言ggraph包绘制环状网络图

2023-05-16

ggraph 是 ggplot2 的扩展,用于绘制关系型数据结构,如网络、图和树等。
ggraph 包含 3 个核心概念:
layout:定义图的布局,如蜂巢图、圆堆积图等
nodes:定义节点图形属性,使用 geom_node_*() 函数来控制
edges:定义边的图形属性,使用 geom_edge_*() 函数来控制

 

R 代码

# install.packages('ggraph')
# install.packages('tidygraph')

library(ggraph)
library(tidygraph)

# help(package=ggraph)
###1. 读入数据

m_data <- read.csv("/test/test.csv")
colnames(m_data) # [1] "from" "to" "Spearman_R" "P_value" "weight"

#节点数据
nodes <- data.frame(name = unique(union(m_data$from, m_data$to)))
nodes$survival_impact <- runif(23,0.0001,0.05)
nodes$cluster <- c(rep("cluster A",5),rep("cluster B",10),rep("cluster c",8))
nodes$role_type <- c(rep("Risk factors for OS",10),
                     rep("Favorable factors for OS",13))
#边数据
edges <- m_data[c("from","to","Spearman_R")]
edges$class <- ifelse(edges$Spearman_R>0, "Positive correlation with P < 0.0001", 
                      "Negative correlation with P < 0.0001")
g <- tbl_graph(nodes = nodes, edges = edges)
class(g) #[1] "tbl_graph" "igraph"  

###2. 绘制图形
# 自定义颜色映射
colors <- colorRampPalette(c("red", "orange", "blue"),space = "rgb")(3)

ggraph(g,layout='linear',circular = TRUE) +
#ggraph(g,layout='linear',circular = FALSE) +
#ggraph(g,layout='circle') +
  geom_node_point(aes(size=survival_impact,colour = cluster),
                  alpha = 0.5) +
  geom_node_text(aes(x = x*1.06, y=y*1.06, label=name,color=cluster),
                 angle=0,hjust=0, fontface="bold",size=3,family="Times") + # 设置点的注释
  scale_size_continuous(range = c(20, 1)) +  #设置点大小范围,可以设置值越小,点越大
  geom_node_point(size = 2,aes(colour = role_type))+
  scale_color_manual(values = c(colors,"green","black")) +
  #geom_edge_link(aes(colour = class,width=abs(Spearman_R)),alpha = 0.5) +
  #geom_edge_arc(alpha = 0.5) + #设置链接线为曲线, 
  # geom_edge_link(mapping = aes(edge_width = abs(Spearman_R), 
  #                              edge_color = class),   
  #                #arrow = arrow(length = unit(4, "mm")),
  #                #start_cap = circle(3, "mm"),              
  #                #end_cap = circle(3, "mm"),
  #                alpha = 0.5) +  
  geom_edge_bend(mapping = aes(edge_width = abs(Spearman_R), 
                               edge_color = class), 
                 strength = 0.02,alpha = 0.5) +
  scale_edge_colour_manual(values = c("lightblue","pink")) +
  scale_edge_width_continuous(range = c(0.5,5)) +
  theme_graph()
  #theme(legend.position="bottom") 
  
##注:ggplot2关于点大小,形状,颜色的映射
## 离散数据:scale_colour_manual,scale_fill_manual,scale_size_manual等
## 连续数据:scale_size,scale_radius,scale_size_continuous,scale_colour_continuous,
# scale_colour_gradient,scale_fill_gradient等

参考

https://www.e-learn.cn/tag/ggraph

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言ggraph包绘制环状网络图 的相关文章

  • spring boot整合OAuth2保证api接口安全

    1 OAuth 概念 OAuth 是一个开放标准 xff0c 允许用户让第三方应用访问该用户在某一网站上存储的私密的资源 xff08 如照片 xff0c 视频 xff0c 联系人列表 xff09 xff0c 而不需要将用户名和密码提供给第三
  • 软件项目的开发流程

    一个软件开发项目过程 xff1a 1 项目启动 1 项目组成立 公司成员 客户成员 2 制定项目预期目标 3 制定项目计划周期 4 建立好项目组成员沟通机制 2 需求调研 1 创建调研计划 协调调研时间 2 收集客户资料 xff0c 获取客
  • asp、jsp与html+ajax优缺比较

    我对jsp和ajax 一直比较困惑 xff0c jsp动态网页技术 xff0c 在服务器端执行 xff0c 能在网页中显示数据这是一种方式 另一种方式是 我打开一个网页 xff08 html xff09 xff0c 加载完成之后 xff0c
  • < Linux > 多线程(生产者消费者模型)

    目录 1 生产者消费者模型 生产者消费者模型的例子 生产者消费者模型的特点 生产者消费者模型的优点 2 基于BlockingQueue的生产者消费者模型 概念 模拟实现基于阻塞队列的生产消费模型 基于计算任务的生产者消费者模型 xff08
  • 分布式秒杀系统限流

    前言 俗话说的好 xff0c 冰冻三尺非一日之寒 xff0c 滴水穿石非一日之功 xff0c 罗马也不是一天就建成的 两周前秒杀案例初步成型 xff0c 分享到了中国最大的同性交友网站 码云 同时也收到了不少小伙伴的建议和投诉 我从不认为分
  • centos下使用docker安装tomcat部署Javaweb项目

    主要步骤 安装docker 卸载旧版本docker 如果centos系统中存在老版本的docker xff0c 可以先卸载掉旧版本的docker xff0c 再安装新版本docker yum remove docker docker com
  • Dockerfile指令介绍

    Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令 xff0c 根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方式 通过源代码路径 Dock
  • redis面试知识点

    Redis在互联网技术存储方面使用如此广泛 xff0c 几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各种刁难 作为一名在互联网技术行业打击过成百上千名 请允许我夸张一下 的资深技术面试官 xff0c 看过了无数落寞
  • Redis分布式锁

    前言 分布式锁一般有三种实现方式 xff1a 1 数据库乐观锁 xff1b 2 基于Redis的分布式锁 xff1b 3 基于ZooKeeper的分布式锁 本篇博客将介绍第二种方式 xff0c 基于Redis实现分布式锁 虽然网上已经有各种
  • SpringCloud全套教程

    https gitee com didispace SpringCloud Learning
  • docker远程连接配置

    在开发的时候 xff0c 我们进程需要用到docker 但很多时候我们用的是window作为开发平台 xff0c 虽然Docker也有window版本的 但window的DockerToolbox是一款不是很成熟的产品 xff0c 有很多小
  • 单相逆变器及基于STM32 SPWM生成代码

    2022 4 26更新 若需商业合作可私聊留VX号 xff0c 博主看到后会添加的 最近在做单相逆变器 xff0c 用篇文章来记录 主电路采用H桥 xff0c 使用IR2104半桥驱动内置630ns死区 xff0c 上管采用自举电容浮地驱动
  • 20200329 百度 测试开发实习 笔试题

    20200329 百度 测试开发实习 笔试题 第一题题目描述 xff1a 输入输出样例输入样例输出提示 第二题题目描述 xff1a 输入输出样例输入样例输出 第一题 题目描述 xff1a 桌子上放着N枚硬币 xff0c 将其从1到N编号 x
  • 《Linux就该这么学》第1章 部署虚拟环境安装Linux系统

    Linux就该这么学 第1章 部署虚拟环境安装Linux系统 目录 常见的Linux系统版本 安装配置VM虚拟机 安装Linux系统 RPM xff08 红帽软件包管理器 xff09 Yum软件仓库 systemd初始化进程 需要长期稳定运
  • 辛勤劳作

    本文只有在12月27日可以学习到 我对敬业的体会是 xff1a 正在从事的工作就是自己的生命 xff0c 它意味着每周7天 xff0c 每年52周一心扑在上面 写下上面这句话 xff0c 我的泪水差一点儿就涌了出来 14年的寿险生涯 xff
  • RocketMQ

    1 主题中存在多个队列 xff0c 生产者向主题中指定的队列发送消息 2 在集群模式下 xff0c 一个消费者集群共同消费一个主题中的多个队列 xff0c 但一个队列只会被一个消费者消费 在广播模式下 xff0c 会被订阅主题的所有消费者消
  • 记一次Gradle搭建多模块项目遇到的问题

    前言 最开始 xff0c 我创建了一个空的项目 xff0c 并在该项目下依次创建了3个模块 但是我发现 xff0c 这几个模块引入的依赖绝大多数都是相同的 于是 xff0c 我灵光一闪 xff08 其实是在最初构建项目时的没想到 xff09
  • springboot 项目访问controller没有进入拦截器

    在项目中新写了一个校验token是否存在的拦截器之后 xff0c 编译和启动都没有问题 直到访问方法的时候发现并没有进入这个拦截器 后来发现是因为springboot在启动之后 xff0c 启动类只会扫描启动类所在的包下的方法 解决方法就是
  • leetcode 1170. 比较字符串最小字母出现频次(C++)

    我们来定义一个函数 f s xff0c 其中传入参数 s 是一个非空字符串 xff1b 该函数的功能是统计 s 中 xff08 按字典序比较 xff09 最小字母的出现频次 例如 xff0c 若 s 61 34 dcce 34 xff0c
  • maven私库nexus2.11.4迁移升级到nexus3.12.0

    https www cnblogs com liangyou666 p 9439755 html nexus简介 nexus是一个强大的maven仓库管理器 它极大的简化了本地内部仓库的维护和外部仓库的访问 nexus是一套开箱即用的系统不

随机推荐

  • Linux安装JDK8详细图文教程

    第一步 获取JDK文件 JDK下载包 xff1a 直接进入 如果跳转登录页面 xff0c 注册一个账号登录即可 登录过后文件就下载完成 第二步 上传JDK到服务器 1 创建JDK目录 span class token function mk
  • 购物商城shopping连载(11)

    订单模块类创建及配置 购物完成之后 xff0c 提交订单 xff0c 生成一个订单 订单表和商品的关系 xff1a 订单和商品的关系是多对多 xff0c 一个订单可以有多个商品 xff0c 一个商品可以属于多个订单 如果是多对多的关系 xf
  • CSS面试题:20道含答案和代码示例的练习题

    如何水平居中一个元素 xff1f 答案 xff1a 可以使用text align属性设置父元素的文本对齐方式为center xff0c 也可以使用margin属性设置元素的左右margin为auto 如何垂直居中一个元素 xff1f 答案
  • Ubuntu GNOME去除顶栏和窗口标题栏方法(亲测可用)

    一 环境 Ubuntu16 04 43 gnome3 gome shell 3 18 5 二 简介 因项目需要 xff0c 软件在 Ubuntu 系统中运行 xff0c 并且全屏显示 而在 Ubuntu 系统中 xff0c 侧边栏的自动隐藏
  • linux 配置FTP多个虚拟用户,私人目录+共享目录

    需求 xff1a 公司多个部门 xff0c 行政 xff0c 财务 xff0c 人事 xff0c 运营 xff0c 每个部门都能上传下载文件 xff0c pub目录是共享目录 xff0c 每个部门都可以上传下载 xff0c 但是无法删除 每
  • Java8新特性详解

    陈老老老板 说明 xff1a 新的专栏 xff0c 本专栏专门讲Java8新特性 xff0c 把平时遇到的问题与Java8的写法进行总结 xff0c 需要注意的地方都标红了 xff0c 一起加油 本文是介绍Java8新特性与常用方法 xff
  • java 基础 matches()方法的作用

    java lang包中的String类 xff0c java util regex包中的Pattern xff0c Matcher类中都有matches 方法 都与正则表达式有关 下面我分别举例 xff1a xff08 字符串 xff1a
  • 什么是建造者模式?

    为什么会有这个模式 xff1f 很多时候我们会构建非常复杂的类 xff0c 内部初始化构成需要进行很多复杂交互操作 xff0c 比如需要去数据库查询数据后作为属性初始值 xff0c 或者说我们想控制它的内部初始化的过程 xff0c 将构建过
  • Android Stdio引入kotlin-android-extensions插件

    在Activity中使用Toast lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt LinearLayout xmlns android 61 34 http schema
  • 微信小程序开发(一)

    微信小程序开发 目录 微信小程序开发 一 微信小程序开发 二 五 让小程序连接树莓派 六 xff1a 小程序控制面板设计 七 xff1a 树莓派如何解析小程序的信息 八 xff1a 树莓派如何回信息给小程序 九 xff1a 树莓派与微信小程
  • pancakeswap薄饼添加流动性后实现永久锁仓

    pancakeswap xff08 薄饼 xff09 添加流动性后永久锁仓的目的是彻底放弃对资金池的控制权限 xff0c 永久不能撤池 主要针对项目方在首次完成流动性的添加后 xff0c 永久锁仓 这样就放弃了对流动性的所有权 xff0c
  • GEO芯片数据探针id转化

    以数据集GSE89657为例 xff0c 芯片平台是GPL6244 1 下载表达谱数据 GEO网站手动下载表达谱数据 xff0c 解压 xff0c 去注释 gunzip GSE89657 series matrix txt gz cat G
  • R语言正态分布

    统计分布每一种分布有四个函数 xff1a d density xff08 密度函数 xff09 xff0c p 分布函数 xff0c q 分位数函数 xff0c r 随机数函数 正态曲线呈钟型 xff0c 两头低 xff0c 中间高 xff
  • R语言均匀分布

    在R中 xff0c unif是用来进行均匀分布分析的 xff0c 在其前面加上不同的前缀表示不同的函数 xff0c 各函数的使用格式如下所示 xff1a dunif x min 61 0 max 61 1 log 61 FALSE 分布密度
  • 转录本counts,FPKM,TPM相互转化

    FPKM Fragments Per Kilobase of exon model per Million mapped fragments 每千个碱基的转录每百万映射读取的fragments FPKM xff1a Fragments pe
  • R语言泊松(Poisson)分布

    Poisson分布 xff0c 是一种统计与概率学里常见到的离散概率分布 xff0c 由法国数学家西莫恩 德尼 泊松 xff08 Sim on Denis Poisson xff09 在1838年时发表 泊松分布的参数 是单位时间 或单位面
  • windows软件窗口或者对话框太大超出屏幕解决办法

    软件窗口太大显示不全 问题 xff1a 软件窗口或对话框太大 xff0c 最大化也无法显示全部 xff0c 拖动标题栏移动到屏幕顶部 xff0c 底部也显示不出来 具体见下面两张图片 解决方法 xff1a 使用第三方工具 xff1a 窗口移
  • R语言卡方(chisq)分布

    若n个相互独立的随机变量 xff0c xff0c n xff0c 均服从标准正态分布 xff08 也称独立同分布于标准正态分布 xff09 xff0c 则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量 xff0c 其分布规律称为
  • liftOver进行基因组坐标转换

    Liftover是UCSC中用于基因组版本之间转换的一个工具 xff0c 既可以做某一物种内基因组版本的转换 xff0c 还可以做物种间基因组版本的转换 1 网页转换 http genome ucsc edu cgi bin hgLiftO
  • R语言ggraph包绘制环状网络图

    ggraph 是 ggplot2 的扩展 xff0c 用于绘制关系型数据结构 xff0c 如网络 图和树等 ggraph 包含 3 个核心概念 xff1a layout xff1a 定义图的布局 xff0c 如蜂巢图 圆堆积图等 nodes