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

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

R语言是一种广泛应用于数据分析和统计建模的编程语言。在R语言中,可以使用多种和函数来绘制大型网络图。下面是一种常用的方法: 1. 安装和加载相关:首先,需要安装并加载用于网络图绘制,如`igraph`和`ggraph`。可以使用以下命令安装这些: ```R install.packages("igraph") install.packages("ggraph") ``` 然后,使用以下命令加载这些: ```R library(igraph) library(ggraph) ``` 2. 创建网络对象:使用`igraph`中的函数创建一个网络对象。可以使用不同的方法来定义网络的节点和边。例如,可以使用节点列表和边列表来创建网络对象。以下是一个示例: ```R # 创建节点列表 nodes <- data.frame(id = c("A", "B", "C", "D")) # 创建边列表 edges <- data.frame(from = c("A", "A", "B"), to = c("B", "C", "D")) # 创建网络对象 network <- graph_from_data_frame(d = edges, vertices = nodes, directed = FALSE) ``` 3. 绘制网络图:使用`ggraph`中的函数来绘制网络图。可以选择不同的布局算法和样式选项来定制图形的外观。以下是一个示例: ```R # 使用力导向布局算法布局网络图 layout <- create_layout(network, layout = "fr") # 绘制网络图 plot <- ggraph(layout) + geom_edge_link() + geom_node_point() + geom_node_text(aes(label = id), vjust = -1) + theme_void() # 显示网络图 plot ``` 这是一个简单的示例,你可以根据自己的需求进一步定制和调整网络图的样式和布局。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值