2015-05-21 30 views
6

Ho una rete che, quando lo stampo, ha un numero di nodi sovrapposti. Voglio cambiare l'opacità dei colori in modo da poter vedere i nodi al di sotto degli altri quando si sovrappongono. Ad esempio, guarda questo video: https://vimeo.com/52390053Modifica dell'opacità del nodo/vertice in iGraph in R

Sto usando iGraph per i miei grafici. Ecco un trafiletto semplificata di codice:

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) 

Non posso, tuttavia, trovare un'opzione in iGraph per modificare l'opacità dei colori dei nodi.

Qualche idea su come potrei farlo? Ho pensato forse qualcosa come V(g)$alpha <- 0.8, ma questo non fa nulla.

risposta

9

Si potrebbe provare ad es. questo:

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

Perfetto, grazie. L'ho modificato nel mio codice come segue: plot (g, vertex.color = adjustcolor (nodeslist $ colors, alpha.f = .5)) È interessante notare che non funziona con tkplot(), solo trama (). Dato che ho bisogno di spostare alcune cose, ho bisogno di incorporare le coordinate di tkplot() nella normale funzione plot() e poi fare l'opacità cambia lì. – Net20

3

Un modo in cui mi trovo più facile da controllare rispetto al metodo fornito da lukeA è quello di utilizzare rgb(). È possibile specificare il colore (di un nodo, il nodo telaio, bordo, etc.) in termini di quattro canali: R, G, B e A (alfa):

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

altro vantaggio è possibile variare facilmente l'alfa (o il colore) in base a un vettore. L'esempio che segue non è esattamente pratico, ma si ottiene l'idea di come questo potrebbe essere utilizzato:

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