当前位置:   article > 正文

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

ggraph

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

 

R 代码

  1. # install.packages('ggraph')
  2. # install.packages('tidygraph')
  3. library(ggraph)
  4. library(tidygraph)
  5. # help(package=ggraph)
  6. ###1. 读入数据
  7. m_data <- read.csv("/test/test.csv")
  8. colnames(m_data) # [1] "from" "to" "Spearman_R" "P_value" "weight"
  9. #节点数据
  10. nodes <- data.frame(name = unique(union(m_data$from, m_data$to)))
  11. nodes$survival_impact <- runif(23,0.0001,0.05)
  12. nodes$cluster <- c(rep("cluster A",5),rep("cluster B",10),rep("cluster c",8))
  13. nodes$role_type <- c(rep("Risk factors for OS",10),
  14.                      rep("Favorable factors for OS",13))
  15. #边数据
  16. edges <- m_data[c("from","to","Spearman_R")]
  17. edges$class <- ifelse(edges$Spearman_R>0, "Positive correlation with P < 0.0001"
  18.                       "Negative correlation with P < 0.0001")
  19. g <- tbl_graph(nodes = nodes, edges = edges)
  20. class(g) #[1] "tbl_graph" "igraph"  
  21. ###2. 绘制图形
  22. # 自定义颜色映射
  23. colors <- colorRampPalette(c("red", "orange", "blue"),space = "rgb")(3)
  24. ggraph(g,layout='linear',circular = TRUE) +
  25. #ggraph(g,layout='linear',circular = FALSE) +
  26. #ggraph(g,layout='circle') +
  27.   geom_node_point(aes(size=survival_impact,colour = cluster),
  28.                   alpha = 0.5) +
  29.   geom_node_text(aes(x = x*1.06, y=y*1.06, label=name,color=cluster),
  30.                  angle=0,hjust=0, fontface="bold",size=3,family="Times") + # 设置点的注释
  31.   scale_size_continuous(range = c(20, 1)) +  #设置点大小范围,可以设置值越小,点越大
  32.   geom_node_point(size = 2,aes(colour = role_type))+
  33.   scale_color_manual(values = c(colors,"green","black")) +
  34.   #geom_edge_link(aes(colour = class,width=abs(Spearman_R)),alpha = 0.5) +
  35.   #geom_edge_arc(alpha = 0.5) + #设置链接线为曲线, 
  36.   # geom_edge_link(mapping = aes(edge_width = abs(Spearman_R), 
  37.   #                              edge_color = class),   
  38.   #                #arrow = arrow(length = unit(4, "mm")),
  39.   #                #start_cap = circle(3, "mm"),              
  40.   #                #end_cap = circle(3, "mm"),
  41.   #                alpha = 0.5) +  
  42.   geom_edge_bend(mapping = aes(edge_width = abs(Spearman_R), 
  43.                                edge_color = class), 
  44.                  strength = 0.02,alpha = 0.5) +
  45.   scale_edge_colour_manual(values = c("lightblue","pink")) +
  46.   scale_edge_width_continuous(range = c(0.5,5)) +
  47.   theme_graph()
  48.   #theme(legend.position="bottom"
  49.   
  50. ##注:ggplot2关于点大小,形状,颜色的映射
  51. ## 离散数据:scale_colour_manual,scale_fill_manual,scale_size_manual等
  52. ## 连续数据:scale_size,scale_radius,scale_size_continuous,scale_colour_continuous,
  53. # scale_colour_gradient,scale_fill_gradient等

参考

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/270584?site
推荐阅读
相关标签
  

闽ICP备14008679号