在R中使用iGraph更改节点/顶点透明度

9

我有一个网络图,当我绘制它时,有许多重叠的节点。我想改变颜色的透明度,这样当它们重叠时,你可以看到下面的节点。例如,可以看看这个视频:https://vimeo.com/52390053

我在绘图中使用了iGraph。这是一个简化的代码片段:

net1 <- graph.data.frame(myedgelist, vertices=nodeslist, directed = TRUE)

g <- graph.adjacency(get.adjacency(net1))

V(g)$color <- nodeslist$colors  #This is a set of specific colors corresponding to each node. They are in the format "skyblue3". (These plot correctly for me). 

E(g)$color <-"gray" 

plot.igraph(g)

然而,我在iGraph中找不到更改节点颜色透明度的选项。

你有什么想法吗?我曾尝试V(g)$alpha <- 0.8,但这似乎没有作用。

2个回答

11

你可能想尝试例如这个:

library(igraph)
set.seed(1)
g <- barabasi.game(200)
plot(g, 
     vertex.color = adjustcolor("SkyBlue2", alpha.f = .5), 
     vertex.label.color = adjustcolor("black", .5))

在此输入图片描述


1
非常好,谢谢。我已经将它调整到我的代码中,如下所示:plot(g, vertex.color = adjustcolor(nodeslist$colors, alpha.f = .5))有趣的是,它在tkplot()中不起作用,只能在plot()中使用。由于我需要移动一些东西,我需要将tkplot()坐标合并到正常的plot()函数中,然后在那里进行透明度更改。 - Net20

8

我发现比lukeA提供的方法更容易控制的一种方式是使用rgb()。您可以通过四个通道:R、G、B和A(alpha)来指定节点、节点框架、边缘等的颜色:

library(igraph)
set.seed(1)
g <- barabasi.game(200)
plot(g, 
     vertex.color = rgb(0,0,1,.5), 
     vertex.label.color = rgb(0,0,0,.5))

这里输入图片描述

另一个优点是您可以根据向量轻松地变化alpha(或颜色)。下面的例子并不完全实用,但您可以了解如何使用它:

library(igraph)
set.seed(1)
g <- barabasi.game(200)

col.vec <- runif(200,0,1)
alpha.vec <- runif(200,0,1)

plot(g, 
     vertex.color = rgb(0,0,col.vec,alpha.vec), 
     vertex.label.color = rgb(0,0,0,.5))

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接