基于减小边缘权重的边缘阴影

时间:2015-07-31 11:32:12

标签: r colors igraph

我正在尝试着色边缘并创建匹配的线性色标,其中0为浅灰色,1为黑色,使用colorRampPalette。但是,由于我无法根据递减E(g)重新排列边缘序列E(g)$weights以使其与线性比例匹配,因此图表错误。

mat <- matrix(0, nrow=4, ncol=4)
mat[2,1] <- 0.5
mat[3,4] <- 0.9
mat[3,1] <- 0.1
mat[4,2] <- 0.3

require(igraph)
g <- graph.adjacency(mat, mode="directed", diag=F, weighted = T)
E(g)$arrow.width <- 1.3
E(g)$arrow.size <- 0.4

par(mfrow=c(1,3))

plot(g, layout=layout.circle, edge.width=E(g)$weight*5, edge.color="black")

colfunc <- colorRampPalette(c("black", "lightgray"))
my.palette <- rev(colfunc(length(E(g)$weight)))
E(g)$color <- my.palette
plot(g, layout=layout.circle)

#scale
plot(y=sort(E(g)$weight),x=rep(1,length(E(g)$weight)),col=rev(colfunc(length(E(g)$weight[order(E(g)$weight)]))),main="strength",pch=19,cex=3,xaxt="n",ann=T,bty="n",ylim=0:1)

我想将边缘序列与有序权重相匹配,例如

E(g) <- E(g)[order(E(g)$weight,decreasing = T)]

但这不起作用。此外,只是对权重进行排序不会改变边缘序列,因此图形结果不正确。

以下是两个示例图和比例。显然,后一个图中的边缘阴影与前者的边缘厚度不符,这正是我想要的。比例对应于后一个图中的边缘着色。

enter image description here

非常感谢任何建议,谢谢。

0 个答案:

没有答案