2014-06-26 11 views
5

wskutek jakiegoś procesu jest lista ścieżek od A do C do B, npTrzy wykres kolumna

which.effect(A1,A2,10,1,1) 
[[1]] 
[1] 10 2 1 

[[2]] 
[1] 10 28 1 

[[3]] 
[1] 10 6 9 

[[4]] 
[1] 10 24 9 

[[5]] 
[1] 10 28 9 

Chciałbym mieć to wykres z trzech równoległych kolumn, najpierw dla pochodzenie, drugi punkt pośredni, a trzeci miejsce przeznaczenia. W tym przykładzie pierwsza kolumna będzie miała tylko węzeł: 10, drugi 2, 6, 24, 28 i trzeci 1, 9. Następnie skierowane krawędzie (strzałki) przejdą od węzłów w pierwszej kolumnie do węzłów w drugiej kolumnie, a od węzłów w drugiej kolumnie do węzłów w trzeciej.

Czy jest to możliwe z igraph?

Z góry dziękuję.

+0

Chyba błędnie usuniętego @ Gabor-csardi odpowiedź. Czy istnieje sposób na odzyskanie? – jcredberry

Odpowiedz

6

Nie jestem do końca pewien, czy to jest to, czego chcesz, ale może uda Ci się tam dotrzeć.

Chodzi o to, aby najpierw utworzyć listę krawędzi z danych, aby następnie utworzyć macierz sąsiedztwa, a następnie wydrukować.

library(igraph) 
library(Rgraphviz) 

# your data 
lst <- list(c(10,2,1), c(10,28,1), c(10,6,9), c(10,24,9), c(10,28,9)) 

# create edge list (from in first column/to in the second) 
d <- do.call(rbind, lst) 
edges <- rbind(d[,1:2], d[,2:3]) 

# get adjacency matrix 
g <- graph.data.frame(edges, directed=TRUE) 
adj <- as.matrix(get.adjacency(g)) 

# convert to a graph object and plot 
g2 <- new("graphAM", adjMat=adj, edgemode="directed") 
plot(g2, attrs = list(graph = list(rankdir="LR"), 
          node = list(fillcolor = "lightblue"))) 

rankdir="LR" Działki na wykresie od lewej do prawej

enter image description here

Przede działka wykorzystuje dot dać ścisłej strukturze.

EDIT

Zastosowanie layout = layout.reingold.tilford aby uzyskać strukturę drzewa za pomocą igraph

E(g)$curved <- 0 
plot.igraph(g, vertex.size=30, layout=layout.reingold.tilford)