寫在前面outputgephi函數(shù):可以使用相關(guān)矩陣和微生物群落的phyloseq對象直接生成Gephi軟件需要兩個文件,直接保存即可。 nodeEdge函數(shù):可以生成邊文件和節(jié)點文件,用于制作ggraph對象或者igraph對象。 輸入文件#--導(dǎo)入所需R包#------- library(igraph) library(network) library(sna) library(ggClusterNet) library(tidyverse)
ps = readRDS("../ori_data/ps_liu.rds") ps corMicro函數(shù)用于計算相關(guān)按照豐度過濾微生物表格,并卻計算相關(guān)矩陣,按照指定的閾值挑選矩陣中展示的數(shù)值。 #----------計算相關(guān)#---- result = corMicro (ps = ps,N = 0.02,r.threshold=0.6,p.threshold=0.05,method = "pearson") #--提取相關(guān)矩陣 cor = result[[1]] dim(cor) 構(gòu)造Gephi的輸入網(wǎng)絡(luò)文件gephi <- outputgephi(ps = result[[3]],cor = cor) edge_Gephi <- gephi[[1]] head(edge_Gephi) node_Gephi <- gephi[[2]] head(node_Gephi) nodeEdge函數(shù)生成節(jié)點和邊文件nodeEdge:用于將相關(guān)矩陣轉(zhuǎn)化為邊文件和節(jié)點文件。默認(rèn)zero = TRUE,將不相關(guān)的點去除。 result4 = nodeEdge(cor = cor)
#提取變文件 edge = result4[[1]] dim(edge) #--提取節(jié)點文件 node = result4[[2]] dim(node) 構(gòu)造igraph對象#-------輸出igraph對象 #--這里將為0的也添加進(jìn)去了,但是這些邊其實都是離散的。 igraph = igraph::graph_from_data_frame(edge, directed = FALSE, vertices = node) #--------------------igraph對象 # ## 邊的權(quán)重 # E(igraph)$weight # #邊的顯著性標(biāo)簽 # E(igraph)$p # # 節(jié)點屬性 # V(igraph)$name #---------如何設(shè)置igraph的出圖相關(guān)可視化設(shè)置
#------邊----------------------設(shè)置邊的顏色-一般而言我們按照正負(fù)相關(guān)分別上兩種顏色 E.color <- E(igraph)$weight E.color <- ifelse(E.color>0, "red",ifelse(E.color<0, "blue","grey")) E(igraph)$color <- as.character(E.color) # 邊的粗細(xì)----------?? # E(igraph)$width = abs(E(igraph)$weight)
#-----------可視化---------設(shè)置layout l <- layout_nicely(igraph) l <- norm_coords(l, ymin=-1, ymax=1, xmin=-1, xmax=1) #--------------------出圖 plot(igraph,main=paste( "network",sep = ""), layout=l, # vertex.shape="fcircle", # vertex.frame.color="white", vertex.label=NA , vertex.frame.color="#984EA3", vertex.color="#984EA3", vertex.size =2, vertex.frame.alpha =0.5, edge.width=0.5, edge.lty=2, edge.curved=F, margin=c(0,0,0,0) #vertex.frame.width=5 ) 構(gòu)造到 ggraph 對象library(tidygraph) library(ggraph)
tbl_graph = tidygraph::tbl_graph(nodes = node, edges = edge, directed = FALSE) tbl_graph ggraph(tbl_graph , layout = 'linear', circular = TRUE) + # geom_edge_arc() + # geom_edge_fan() + geom_edge_link(aes(edge_colour = direction))+ geom_node_point() # 對網(wǎng)絡(luò)的點進(jìn)行設(shè)置 當(dāng)我們想把離散的點也展現(xiàn)設(shè)置zero = FALSE即可表示離散 result4 = nodeEdge(cor = cor,zero = FALSE) #提取變文件 edge = result4[[1]]
#--提取節(jié)點文件 node = result4[[2]] dim(node)
tbl_graph = tidygraph::tbl_graph(nodes = node, edges = edge, directed = FALSE) tbl_graph ggraph(tbl_graph , layout = 'linear', circular = TRUE) + # geom_edge_arc() + # geom_edge_fan() + geom_edge_link(aes(edge_colour = direction))+ geom_node_point() # 對網(wǎng)絡(luò)的點進(jìn)行設(shè)置
|