2017-01-03 3 views
1

У меня есть диаграмма, которые должны быть представлены в правильном порядке, как и в наборе данных:как получить данные в правильном порядке, в igraph в R

df <- data.frame(
col1 = c("A1", "B1", "C1", "D1", "E1", "A", "B", "C", "D", "E"), 
col2 = c("ABC", "ABC", "B1", "B1", "B1", "A1", "B1", "C1", "D1", "E1")) 

В наборе данных оба col1 и col2 первых 5 элементов используются для представления иерархии ,

library(igraph) 

abc <- union(df$col2, df$col1) 
df <- df[c('col2', 'col1')] 
names(df) <- c('from', 'to') 
g <- graph.data.frame(df, directed = TRUE, vertices = abc) 
plot(g,vertex.size=2, vertex.label.dist=0.5, vertex.color="cyan", 
edge.arrow.size=0.5, layout=layout.reingold.tilford(g)) 

И с этим кодом я получаю эту диаграмму

А и В должны находиться в передней части диаграммы, и следует читать А, В, С, D, E

enter image description here

ответ

1

I Полагают, что igraph отображает как ребра, так и вершины «в порядке». Поэтому, я думаю, вы можете изменить порядок вершин:

abc <- abc[order(abc)]

... и тогда ваш существующий код должен работать.

Re-ordered graph

+1

можно также использовать 'а <- сортировка (объединение (ДФ $ col2, ДФ $ col1))' –

Смежные вопросы