用igraph绘制网络

用igraph绘制网络,r,social-networking,correlation,igraph,R,Social Networking,Correlation,Igraph,我想从相关矩阵创建一个网络,并绘制它。我想用igraph来做这个。这是我的数据的一个子集 我的数据 这就是我所运行的: > library(psych) > mydata <- read.csv(file="L5_filt.txt", header=T, row.names=1, sep="\t") > mydata_t <- t(as.matrix(mydata)) > cor.matrix <- cor(mydata_t, method = "

我想从相关矩阵创建一个网络,并绘制它。我想用igraph来做这个。这是我的数据的一个子集

我的数据

这就是我所运行的:

> library(psych)

> mydata <- read.csv(file="L5_filt.txt", header=T, row.names=1, sep="\t")

> mydata_t <- t(as.matrix(mydata))

> cor.matrix <- cor(mydata_t, method = "spearman")

> t = which(cor.matrix > 0.6 & lower.tri(cor.matrix),arr.ind=TRUE)

> t.graph=graph.data.frame(t,directed=F)

> t.names <- colnames(cor.matrix)[as.numeric(V(t.graph)$name)]

> par(mai=c(1,1,0.1,0.15), mar=c(1, 0, 1, 1), mgp=c(2,1,0), mfrow=c(1,2), cex=0.7, lwd=0.5)

> plot(t.graph, vertex.size=5, vertex.shape="circle", vertex.label.color="red", vertex.label=t.names, vertex.label.cex=0.9, edge.width=1, layout=layout.fruchterman.reingold)
>图书馆(心理学)
>mydata mydata\u t cor.matrix t=其中(cor.matrix>0.6和更低的.tri(cor.matrix),arr.ind=TRUE)
>t.graph=graph.data.frame(t,directed=F)
>t.名称par(mai=c(1,1,0.1,0.15),mar=c(1,0,1,1),mgp=c(2,1,0),mfrow=c(1,2),cex=0.7,lwd=0.5)
>绘图(t.graph,vertex.size=5,vertex.shape=“circle”,vertex.label.color=“red”,vertex.label=t.names,vertex.label.cex=0.9,edge.width=1,layout=layout.fruchterman.reingold)

现在我想在同一个图上显示所有的“强”相关性,包括正相关性和负相关性,因此在r>0.6和的情况下,您应该使用
abs
来选择元素:

t = which(abs(cor.matrix) > 0.6 & lower.tri(cor.matrix),arr.ind=TRUE)
注意这里你的矩阵只包含1,-1,NA,也许你应该回顾一下你是如何计算相关性的

然后使用t索引创建如下颜色向量,例如:

E(t.graph)$color =   ifelse(cor.matrix[t] > 0.6,'magenta','green')
然后使用相同的plot语句


我使用corr.test函数生成相关矩阵cor.matrix 0.6和更低。tri(cor.matrix),arr.ind=TRUE)我得到一个错误:abs中的error(cor.matrix):数学函数的非数值参数您知道如何生成值范围为-1到+1的相关矩阵,然后我可以使用它来构建网络吗?如果您使用了
corr.test
,请将所有实例
cor.matrix
替换为
cor.matrix$r
。您发现Kendall cor rank有任何差异吗?
E(t.graph)$color =   ifelse(cor.matrix[t] > 0.6,'magenta','green')