2015-05-21 14 views
6

Tôi có một mạng lưới, khi tôi vẽ nó, có một số nút chồng chéo. Tôi muốn thay đổi độ mờ của các màu để bạn có thể nhìn thấy các nút bên dưới các phần khác khi chúng chồng lên nhau. Ví dụ: xem video này: https://vimeo.com/52390053Thay đổi độ mờ của nút/đỉnh trong iGraph trong R

Tôi đang sử dụng iGraph cho ô của mình. Dưới đây là một lời giới thiệu đơn giản hóa mã:

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) 

tôi có thể không, tuy nhiên, tìm thấy một tùy chọn trong iGraph để thay đổi độ trong suốt của màu sắc nút.

Bất kỳ ý tưởng nào về cách tôi có thể thực hiện việc này? Tôi nghĩ có lẽ một cái gì đó như V(g)$alpha <- 0.8, nhưng điều này không làm bất cứ điều gì.

Trả lời

9

Bạn có thể muốn thử ví dụ: này:

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

enter image description here

+1

Perfect, cảm ơn. Tôi điều chỉnh nó vào mã của tôi như sau: cốt truyện (g, vertex.color = adjustcolor (nodeslist $ colors, alpha.f = .5)) Thật thú vị, nó không hoạt động với tkplot(), chỉ cốt truyện (). Khi tôi cần di chuyển một số thứ xung quanh, tôi sẽ cần phải kết hợp các tọa độ tkplot() vào hàm plot() bình thường và sau đó thực hiện các thay đổi opacity ở đó. – Net20

3

Một cách tôi tìm thấy dễ dàng hơn để kiểm soát hơn so với phương pháp được cung cấp bởi lukeA là sử dụng rgb(). Bạn có thể chỉ định màu (của một nút, khung nút, cạnh, vv) về bốn kênh của nó: R, G, B, và 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)) 

enter image description here

Một ưu điểm khác là bạn có thể dễ dàng thay đổi alpha (hoặc màu) theo một vector. Ví dụ dưới đây là không chính xác thực tế, nhưng bạn sẽ có được ý tưởng như thế nào điều này có thể được sử dụng:

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

Các vấn đề liên quan