2015-05-21 10 views
6

Ich habe ein Netzwerk, das, wenn ich es plotte, eine Anzahl von überlappenden Knoten hat. Ich möchte die Deckkraft der Farben ändern, so dass Sie Knoten unter anderen sehen können, wenn sie sich überlappen. Als Beispiel siehe dieses Video: https://vimeo.com/52390053Ändern der Knoten-/Vertex-Opazität in iGraph in R

Ich verwende iGraph für meine Plots. Hier ist eine vereinfachte Klappentext Code:

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) 

Ich kann jedoch nicht eine Option in iGraph finden die Opazität der Knoten Farben zu ändern.

Irgendeine Idee, wie ich das tun könnte? Ich dachte vielleicht etwas wie V(g)$alpha <- 0.8, aber das tut nichts.

Antwort

9

Sie möchten vielleicht versuchen, z. dies:

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, danke. Ich habe es in meinen Code wie folgt angepasst: plot (g, vertex.color = adjustcolor (nodeslist $ farben, alpha.f = .5)) Interessanterweise funktioniert es nicht mit tkplot(), nur plot (). Da ich einige Dinge bewegen muss, muss ich die tkplot() - Koordinaten in die normale plot() -Funktion integrieren und dann die Opazitätsänderungen dort vornehmen. – Net20

3

Ein Weg, ich leichter finden steuern als die Methode von Lukea vorgesehen ist rgb() zu verwenden. Sie können Farbe (von einem Knoten, der Knoten Rahmen, EDGE, etc.) in Bezug auf seine vier Kanäle angeben: R, G, B und 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

Ein weiterer Vorteil Sie können Alpha (oder Farbe) einfach nach einem Vektor variieren. Das Beispiel ist unten nicht gerade praktisch, aber Sie bekommen die Idee, wie diese verwendet werden könnten:

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