美文网首页试读R plot生信绘图
小的PPI网络图,R也可以搞定它

小的PPI网络图,R也可以搞定它

作者: 小洁忘了怎么分身 | 来源:发表于2021-09-09 23:50 被阅读0次

    一般来说网络图都是R语言导出数据放入cytoscape里面绘制,今天想试试在R语言内部去画,确实有相应的R包(igraph)可以做,不是专门针对PPI网络来的,自己组织一下数据可以画。

    尤其是基因数量比较少的情况下,还是很好用的,省掉手动点鼠标的重复操作。

    1.输入数据

    string_interactions.tsv是从string网页下载的PPI网络输出结果文件。
    图上基因的颜色是按照上下调来分配的,在这个例子里基因上下调信息是编的,实际应用时可以从差异分析结果中得到。

    2.样图

    3.代码如下

    library(igraph)
    links= read.delim("string_interactions.tsv")
    network <- graph_from_data_frame(d=links[,c(1:2,13)], directed=F) 
    deg <- degree(network, mode="all")
    
    nodes <- data.frame(
        name=unique(links$X.node1),
        group=c( rep("up",6),rep("down",5)))
    network <- graph_from_data_frame(d=links, vertices=nodes, directed=F) 
    
    my_color = c("#66C2A5", "#FC8D62", "#8DA0CB")[as.numeric(as.factor(V(network)$group))]
    par(bg="grey13", mar=c(0,0,0,0))
    plot(network, 
         vertex.size=deg,
         layout=layout.circle,
         vertex.color=my_color,
         vertex.label.cex=0.7,
         vertex.label.color="white",
         vertex.frame.color="transparent",
         edge.width=E(network)$combined_score*3,
         edge.curved=0.1)
    
    legend(x=1, y=1, 
           legend=unique(V(network)$group), 
           col = unique(my_color) , 
           bty = "n", pch=20 , pt.cex = 2, cex = 1,
           text.col="white" , horiz = F)
    
    plot(network, 
         vertex.size=deg,
         layout=layout.fruchterman.reingold,
         vertex.color=my_color,
         vertex.label.cex=0.7,
         vertex.label.color="white",
         vertex.frame.color="transparent",
         edge.width=E(network)$combined_score*3,
         edge.curved=0)
    
    legend(x=1, y=1, 
           legend=unique(V(network)$group), 
           col = unique(my_color) , 
           bty = "n", pch=20 , pt.cex = 2, cex = 1,
           text.col="white" , horiz = F)
    

    相关文章

      网友评论

        本文标题:小的PPI网络图,R也可以搞定它

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