2012-08-22 14 views
5

że ma następujący schemat utworzony w igraphkontrolujący krawędzie widoczne na wykresie sieci w igraph w 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

że chce pokazać wszystkie wierzchołki/węzłów ale tylko krawędzi, gdzie bond.strength> 34 (tj. tylko czerwone i żółte krawędzie). mogę kontrolować tego poprzez ustawienie bond.strength < 34 do bieli, ale nie jest całkiem, gdy odbywa się na moich rzeczywistych danych ustawiony jako białe brzegi „przeciąć” pozostałe krawędzie tj

enter image description here

Czy istnieje inny sposób po prostu kontrolować, które krawędzie są widoczne, pokazując wszystkie wierzchołki? Dzięki

Odpowiedz

5

Zastanawiam się, co się dzieje, jeśli ustawić kolor linii, aby być przejrzyste, coś jak:

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

I ugotował tę liczbę kolorów z:

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

Alternatywnie, można wejdź do środka i pomiń je ze swojego edgelisty.

+0

To działało ładnie. Dzięki! – Elizabeth

+1

To właściwie nie jest doskonałe, ponieważ niektóre urządzenia nie obsługują przezroczystości. Lepszym rozwiązaniem jest ustawienie typu linii na "0", co oznacza brak linii: 'E (df) [bond.strength <34] $ lty <- 0'. –

+0

całkiem fajne! przezroczystość była sztuczką, której potrzebowałem, aby węzły cicho zniknęły. size = 0, shape = "none" i wiele innych ustawień po prostu nie działało. dzięki – Raffael

Powiązane problemy