学做NAR图表:ggraph做网络图

作者: KS科研分享与服务 | 来源:发表于2022-10-31 11:09 被阅读0次

    最近在NAR上看到一篇文章:


    image.png

    原文网络图如下:


    image.png

    我们借此机会,通过ggraph作图解析相关参数。详细注释代码和参数已上传QQ群文件!我做的图如下,有一点问题,但不影响我们对这个函数的解析。

    image.png

    加载R包和节点数据,可以是STRING分析得到的网络文件,也可以是miRNA对应靶基因文件,再或者可以是转录因子对应的调控文件等!

    setwd("D:/KS项目/公众号文章/网络节点图")
    df <- read.csv("network.csv", header = T)
    colnames(df) <- c("ID", "path", "gene", "Pval")
    library(ggraph)
    library(tidygraph)
    

    设置节点和边缘。

    paths <- c("Node1", "Node2", "Node3")
    nodelist <- list()
    for (i in 1:length(paths)){
      node <- subset(df, path == paths[i])
      
      nodes <- data.frame(name = unique(union(node$path, node$gene)))
      nodes$values <- c(sum(node$Pval), node$Pval)
      
      nodelist[[i]] <- nodes
    }
    
    
    
    nodes <- rbind(nodelist[[1]],nodelist[[2]],nodelist[[3]])
    nodes$cluster <- c(rep("Node1",1),rep("gene",12),
                       rep("Node2",1),rep("gene",11),
                       rep("Node3",1),rep("gene",10))
    
    
    
    edges <- df[c("path","gene","Pval")]
    edges$class <- edges$path
    

    构建作图文件。

    layout_cir <- tbl_graph(nodes = nodes, edges = edges)
    

    出图:

    ggraph(layout_cir,layout='linear',circular = TRUE) +
      geom_node_point(aes(size=values,colour = cluster))+
      geom_node_text(aes(x = 1.03 * x,
                         y = 1.03 * y,
                         label=name,
                         color=cluster,
                         angle = -((-node_angle(x, y) + 90) %% 180) + 90),
                     hjust='outward') +
      geom_edge_arc(aes(colour=class))+
      theme_void()+
      theme(legend.position = "none")+
      scale_colour_manual(values =c('#407972',
                                    '#961E28',
                                    '#D46724',
                                    '#0f8096'))+
      scale_edge_colour_manual(values = c('#961E28',
                                          '#D46724',
                                          '#0f8096'))+
      scale_size_continuous(range = c(2,8))+
      coord_cartesian(xlim=c(-1.5,1.5),ylim = c(-1.5,1.5))
    
    image.png

    这样就完成了,也是美美的。如果觉得我的分享对你有用、有帮助的话,点个赞、分享一下再走呗!!!更多精彩请至我的公众号---KS科研分享与服务

    相关文章

      网友评论

        本文标题:学做NAR图表:ggraph做网络图

        本文链接:https://www.haomeiwen.com/subject/rnnktdtx.html