2012-08-22 16 views
5

ho un diagramma seguente creato in igraphControllo che i bordi sono visibili in un diagramma di rete in igraph in r

set.seed(1410) 
df<-data.frame(
"site.x"=c(rep("a",4),rep("b",4),rep("c",4),rep("d",4)), 
"site.y"=c(rep(c("e","f","g","h"),4)), 
"bond.strength"=sample(1:100,16, replace=TRUE)) 

library(igraph) 
df<-graph.data.frame(df) 
V(df)$names <- c("a","b","c","d","e","f","g","h") 
layOUT<-data.frame(x=c(rep(1,4),rep(2,4)),y=c(4:1,4:1)) 
E(df)[ bond.strength < 101 ]$color <- "red" 
E(df)[ bond.strength < 67 ]$color <- "yellow" 
E(df)[ bond.strength < 34 ]$color <- "green" 
V(df)$color <- "white" 
l<-as.matrix(layOUT) 
plot(df,layout=l,vertex.size=10,vertex.label=V(df)$names, 
edge.arrow.size=0.01,vertex.label.color = "black") 

enter image description here

voglio mostrare tutti i vertici/nodi ma solamente bordi dove bond.strength> 34 (ovvero solo i bordi rosso e giallo). Posso controllare questo impostando bond.strength < 34 al bianco, ma non è abbastanza quando fatto i miei dati reali impostato come i bordi bianchi "tagliare" gli altri bordi cioè

enter image description here

Esistono altro modo semplicemente controllando quali bordi sono visibili mentre mostri tutti i vertici? Grazie

risposta

5

Mi chiedo che cosa succede se si imposta il colore delle linee di essere trasparenti, qualcosa di simile:

E(df)[ bond.strength < 34 ]$color <- "#FF000000" 

ho cucinato quel numero a colori con:

hsv(1,1,1,alpha=0) 

In alternativa, si potrebbe entra e omettali dal tuo edgelist.

+0

Che ha funzionato bene. Grazie! – Elizabeth

+1

Questo non è in realtà perfetto, perché alcuni dispositivi non supportano la trasparenza. Una soluzione migliore è impostare il tipo di linea su '0', che significa nessuna linea:' E (df) [bond.strength <34] $ lty <- 0'. –

+0

piuttosto bello! la trasparenza era il trucco di cui avevo bisogno per far scomparire silenziosamente i nodi. size = 0, shape = "none" e molte altre impostazioni semplicemente non funzionavano. Grazie – Raffael

Problemi correlati