Multiple_layout - taowenmicro/ggClusterNet GitHub Wiki
title: "Multiple_layout" author: "wentao" date: "2020/3/22" output: html_document editor_options: chunk_output_type: console chunk_output_type: console
pre code,pre,code {
white-space:pre!important;
overflow-x: scroll!important;
}
knitr::opts_chunk$set(echo = TRUE,
fig.width = 7,
fig.height = 5,
fig.align = "center",
warning = FALSE,
message = FALSE
)
写在前面
ggClusterNet中提供了多种优秀的网络可视化布局算法:
- PolygonClusterG:环状模块,环状布局
- PolygonRrClusterG:环状模块,模块半径正比于节点数量,环状布局
- randomClusterG:随机布局,环状模块
- ArtifCluster:环状模块,人工布局
- randSNEClusterG:sna包中的布局按照模块布局
- PolygonModsquareG 环状布局,顺序行列排布
- PolygonRdmNodeCir 实心圈布局,环状布局
其他布局
其他布局:
- model_Gephi.2: 模仿Gephi布局
- model_igraph:模仿igraph布局
- model_maptree:按照maptree算法布局模块
cor### 网络计算:计算微生物网络
#--导入所需R包#-------
library(phyloseq)
library(igraph)
library(network)
library(sna)
library(tidyverse)
library(ggClusterNet)
library(ggrepel)
data(ps)
result = corMicro (ps = ps,
N = 250,
r.threshold=0.8,
p.threshold=0.05
)
cor = result[1](/taowenmicro/ggClusterNet/wiki/1)
dim(cor)
ps_net = result[3](/taowenmicro/ggClusterNet/wiki/3)
otu_table = as.data.frame(t(vegan_otu(ps_net)))
tax_table = as.data.frame(vegan_tax(ps_net))
分组--模块化
对网络中的OTU进行分组:模块分组
对微生物进行模块化分析,得到微生物的分组信息
netClu = modulGroup( cor = cor,cut = 3,method = "cluster_fast_greedy" )
head(netClu)
netClu = data.frame(ID = row.names(tax_table),group =rep(1:5,length(row.names(tax_table)))[1:length(row.names(tax_table))] )
netClu$group = as.factor(netClu$group)
布局函数:randomClusterG
randomClusterG布局函数对网络节点按照指定的分组(netClu)分类展示,随机布局:
netClu = data.frame(ID = row.names(tax_table),group =rep(1:12,length(row.names(tax_table)))[1:length(row.names(tax_table))] )
netClu$group = as.factor(netClu$group)
set.seed(1112)
result2 = randomClusterG (cor = cor,nodeGroup =netClu )
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
dim(edge)
colnames(edge)[8] = "cor"
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.1,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum,size = mean),pch = 21, data = nodes) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("1.pdf",p1,width = 20,height = 19,limitsize = FALSE)
布局函数:PolygonClusterG
PolygonClusterG布局函数对网络节点按照指定的分组(netClu)分类展示,固定排布为一个环:
netClu = data.frame(ID = row.names(tax_table),group =rep(1:12,length(row.names(tax_table)))[1:length(row.names(tax_table))] )
netClu$group = as.factor(netClu$group)
set.seed(12)
result2 = PolygonClusterG(cor = cor,nodeGroup =netClu,zoom = 0.8,zoom2 = 0.8 )
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum,size = mean),pch = 21, data = nodes) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("2.pdf",p1,width = 20,height = 19)
布局函数:PolygonRrClusterG
PolygonClusterG布局函数对网络节点按照指定的分组(netClu)分类展示,固定排布为一个环,并且按照分组中节点数量较多的的模块大一些:
netClu = modulGroup( cor = cor,cut = 3,method = "cluster_fast_greedy" )
head(netClu)
netClu$group = as.factor(netClu$group)
set.seed(12)
result2 = PolygonRrClusterG(cor = cor,nodeGroup =netClu,zoom2 = 2,zoom = 0.01)
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum,size = mean),pch = 21, data = nodes) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("3.pdf",p1,width = 17,height = 16)
布局函数:ranSNEClusterG
ranSNEClusterG布局函数对网络节点按照指定的分组(netClu)分类展示,将模块按照行列排布。值得注意的是这个函数囊括了R包sna中的多种布局方法,并且修改后进行聚类展示。layout可选的布局方式参见sna中的布局方式:"circle","adj","circrand","eigen","random"
netClu = data.frame(ID = row.names(tax_table),group =rep(1:5,length(row.names(tax_table)))[1:length(row.names(tax_table))] )
netClu$group = as.factor(netClu$group)
?ranSNEClusterG
result2 = ranSNEClusterG (cor= cor,layout ="circrand")
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum),pch = 21, data = nodes,size = 5) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
#
ggsave("4.pdf",p1,width = 12,height = 10)
result2 = ranSNEClusterG (cor= cor,layout ="random")
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum),pch = 21, data = nodes,size = 4) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("5.pdf",p1,width = 12,height = 10)
布局函数:PolygonModsquareG
PolygonModsquareG布局函数对网络节点按照指定的分组(netClu)分类展示,将模块按照行列排布,指定排布的行数量(cut)。
netClu = data.frame(ID = row.names(tax_table),group =rep(1:50,length(row.names(tax_table)))[1:length(row.names(tax_table))] )
netClu$group = as.factor(netClu$group)
result2 <- PolygonModsquareG(cor = cor,nodeGroup =netClu,r1 = 10,N = 10,cut = 8)
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum),pch = 21, data = nodes,size =3) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
ggsave("6.pdf",p1,width = 50,height =50,limitsize = FALSE)
布局函数:PolyRdmNotdCirG
PolygonModsquareG布局函数对网络节点按照指定的分组(netClu)分类展示,将模块按照行列排布
netClu = data.frame(ID = row.names(tax_table),group =rep(1:3,length(row.names(tax_table)))[1:length(row.names(tax_table))] )
netClu$group = as.factor(netClu$group)
result2 = PolyRdmNotdCirG (cor = cor,nodeGroup =netClu )
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum),pch = 21, data = nodes,size = 3) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("8.pdf",p1,width = 10,height =9)
布局函数:rArtifCluster
根据分组,人工指定布局
##-----人工置顶半径大小和圆心位置
#--这里我设置r都是相同的,也可以设置不同,然后包装成一个向量就可以了#-------
art = netClu
art$group = 1:5
xs = as.data.frame(table(art$group))
r = rep(15,length(xs$Freq))
r
#----准备圆心坐标,往往与你的设计有关#---------
# 有多少个模块就提供多少个坐标
#--指定坐标吮顺序按照一下指定
#-------人工准备坐标
ax1 = c(120,0)
ax2 = c(130,-30)
ax3 = c(140,-70)
ax4 = c(130,-110)
ax5 = c(120,-140)
da = rbind(ax1,ax2,ax3,ax4,ax5)
#--------计算布局#---------
#-------计算网络布局-得到节点坐标=node#---------
result2 = ArtifCluster(cor = cor,nodeGroup =art,r = r,da =da)
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
# ---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
library(gganatogram)
library(viridis)
organism = "solanum_lycopersicum.whole_plant"
data =other_key[organism](/taowenmicro/ggClusterNet/wiki/organism)
library(scales)
show_col(data$colour)
data$colour =c("#4DAF4A")
# data$colour[1] = ""
# , sex='female', fill="colour"
p = gganatogram(data=data, organism=organism,ggplot2_only = TRUE,fillOutline='#a6bddb',fill = "colour") +
# theme_void() +
ggtitle(organism) +
theme(plot.title = element_text(hjust=0.5, size=9))
p
p1 <- p + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum,size = mean),pch = 21, data = nodes) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
#--------按照每个部分添加一个箭头
da2 = data.frame(x = da[,1] -50,y = da[,2])
da = as.data.frame(da)
colnames(da) = c("x0","y0")
da3 = cbind(da2,da)
da3
p2 = p1 + geom_segment(aes(x = x, y = y, xend = x0, yend = y0),data = da3,arrow = arrow(length = unit(0.2,"cm")),size = 0.7)
p2
ggsave("9.pdf",p2,width = 12,height = 11)
布局函数:model_Gephi.2
- method :使用的模块化聚类算法,对于生成的可视化布局具有重要影响
- seed: 随机种子设置,会影响最终布局
result2 <- model_Gephi.2(cor = cor,
method = "cluster_fast_greedy",
seed = 12
)
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
#---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
geom_point(aes(X1, X2,fill = Phylum,size = mean),pch = 21, data = nodes) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("10.pdf",p1,width = 12,height = 11)
model_maptree 布局
result2 <- model_maptree(cor = cor,
method = "cluster_fast_greedy",
seed = 12
)
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
#---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() +
geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
# geom_curve(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
# data = edge, size = 0.5,alpha = 0.3,curvature = -0.2) +
geom_point(aes(X1, X2,fill = Phylum,size = mean),pch = 21, data = nodes) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("./11.pdf",p1,width = 12,height = 12)
大网络及其可视化算法应用
library(igraph)
library(dplyr)
library(Hmisc)
p.threshold = 0.05
r.threshold = 0.7
x = ps %>%
# scale_micro(method = "TMM") %>%
vegan_otu() %>%
t() %>%
as.data.frame()
occor<-WGCNA::corAndPvalue(t(x)/colSums(x),method = 'pearson')
mtadj<-multtest::mt.rawp2adjp(unlist(occor$p),proc='BH')
adpcor<-mtadj$adjp[order(mtadj$index),2]
occor.p<-matrix(adpcor,dim(t(x)/colSums(x))[2])
## R value
occor.r<-occor$cor
diag(occor.r) <- 0
# occor.r[occor.p > 0.05|abs(occor.r)<0.4] = 0
occor.r[occor.p > p.threshold | abs(occor.r)< r.threshold] = 0
occor.r[is.na(occor.r)]=0
cor = occor.r
result= cor_Big_micro(ps = ps,N = 0,p.threshold = 0.05,r.threshold = 0.6,scale = FALSE)
cor = result[1](/taowenmicro/ggClusterNet/wiki/1)
大网络布局函数:model_igraph
p.threshold = 0.05
r.threshold = 0.6
x = ps %>%
# scale_micro(method = "TMM") %>%
vegan_otu() %>%
t() %>%
as.data.frame()
occor<-WGCNA::corAndPvalue(t(x)/colSums(x),method = 'pearson')
mtadj<-multtest::mt.rawp2adjp(unlist(occor$p),proc='BH')
adpcor<-mtadj$adjp[order(mtadj$index),2]
occor.p<-matrix(adpcor,dim(t(x)/colSums(x))[2])
## R value
occor.r<-occor$cor
diag(occor.r) <- 0
# occor.r[occor.p > 0.05|abs(occor.r)<0.4] = 0
occor.r[occor.p > p.threshold | abs(occor.r)< r.threshold] = 0
occor.r[is.na(occor.r)]=0
cor = occor.r
result2 <- model_igraph(cor = cor,
method = "cluster_fast_greedy",
seed = 12
)
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
dat = result2[2](/taowenmicro/ggClusterNet/wiki/2)
head(dat)
tem = data.frame(mod = dat$model,col = dat$color) %>% dplyr::distinct( mod, .keep_all = TRUE)
col = tem$col
names(col) = tem$mod
#---node节点注释#-----------
otu_table = as.data.frame(t(vegan_otu(ps)))
tax_table = as.data.frame(vegan_tax(ps))
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
tem2 = dat %>%
dplyr::select(OTU,model,color) %>%
dplyr::right_join(edge,by =c("OTU" = "OTU_1" ) ) %>%
dplyr::rename(OTU_1 = OTU,model1 = model,color1 = color)
head(tem2)
tem3 = dat %>%
dplyr::select(OTU,model,color) %>%
dplyr::right_join(edge,by =c("OTU" = "OTU_2" ) ) %>%
dplyr::rename(OTU_2 = OTU,model2 = model,color2 = color)
head(tem3)
tem4 = tem2 %>%inner_join(tem3)
head(tem4)
edge2 = tem4 %>% mutate(color = ifelse(model1 == model2,as.character(model1),"across"),
manual = ifelse(model1 == model2,as.character(color1),"#C1C1C1")
)
head(edge2)
col_edge = edge2 %>% dplyr::distinct(color, .keep_all = TRUE) %>%
select(color,manual)
col0 = col_edge$manual
names(col0) = col_edge$color
library(ggnewscale)
p1 <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = color),
data = edge2, size = 1) +
scale_colour_manual(values = col0)
ggsave("./cs1.pdf",p1,width = 16,height = 14)
p2 = p1 +
new_scale_color() +
geom_point(aes(X1, X2,color =model), data = dat,size = 4) +
scale_colour_manual(values = col) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
ggsave("./cs2.pdf",p2,width = 16,height = 14)
# plot(igraph,layout=sub_net_layout,vertex.size=2)
# p = ggplot(dat) +
# geom_point(aes(X1, X2,fill = model),pch = 21)
# p
#
大网络布局函数:model_igraph
p.threshold = 0.05
r.threshold = 0.82
x = ps %>%
# scale_micro(method = "TMM") %>%
vegan_otu() %>%
t() %>%
as.data.frame()
occor<-WGCNA::corAndPvalue(t(x)/colSums(x),method = 'pearson')
mtadj<-multtest::mt.rawp2adjp(unlist(occor$p),proc='BH')
adpcor<-mtadj$adjp[order(mtadj$index),2]
occor.p<-matrix(adpcor,dim(t(x)/colSums(x))[2])
## R value
occor.r<-occor$cor
diag(occor.r) <- 0
# occor.r[occor.p > 0.05|abs(occor.r)<0.4] = 0
occor.r[occor.p > p.threshold | abs(occor.r)< r.threshold] = 0
occor.r[is.na(occor.r)]=0
cor = occor.r
result2 <- model_maptree(cor = cor,
method = "cluster_fast_greedy",
seed = 12
)
node = result2[1](/taowenmicro/ggClusterNet/wiki/1)
head(node)
#---node节点注释#-----------
nodes = nodeadd(plotcord =node,otu_table = otu_table,tax_table = tax_table)
head(nodes)
#-----计算边#--------
edge = edgeBuild(cor = cor,node = node)
colnames(edge)[8] = "cor"
head(edge)
p1 <- ggplot() +
geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
data = edge, size = 0.5,alpha = 0.6) +
# geom_curve(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = cor),
# data = edge, size = 0.5,alpha = 0.3,curvature = -0.2) +
geom_point(aes(X1, X2,fill = Phylum,size = mean),pch = 21, data = nodes) +
# geom_text_repel(aes(X1, X2,label = elements),pch = 21, data = nodes) +
# geom_text(aes(X1, X2,label = elements),pch = 21, data = nodes) +
scale_colour_manual(values = c("#377EB8","#E41A1C")) +
scale_size(range = c(4, 14)) +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
theme(panel.background = element_blank()) +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p1
ggsave("./cs3.pdf",p1,width = 26,height = 25)
# plot(igraph,layout=sub_net_layout,vertex.size=2)
# p = ggplot(dat) +
# geom_point(aes(X1, X2,fill = model),pch = 21)
# p
#