Краевая раскраска графа в R

Моя программа создает график на основе файла .txt. Например, если в файле записано 1,5 и 2,3, программа создает граф, соединяющий 1-й и 5-й, а также 2-й и 3-й узлы. Вот код:

library(igraph)
dat<-read.table("file.txt", header = F, sep = ",")
dat[,c(1,2)]
vertices<-as.vector(t(dat[,1:2]))
g<-graph(vertices,directed = F)
plot(g,layout=layout.circle)

Мой вопрос: как я могу раскрашивать края на основе некоторого условия? Например, если программа читает 3,5 в файле в первый раз, я хочу, чтобы край был красным, затем, если она снова читает 3,5, я хочу, чтобы второе ребро должно быть синим, а если есть третья пара 3,5, я хочу, чтобы оно было желтым. Это возможно? Спасибо.


person Alina H.    schedule 12.05.2017    source источник
comment
Было бы легче помочь, если бы вы предоставили воспроизводимый пример с примерным вводом.   -  person MrFlick    schedule 12.05.2017


Ответы (1)


Один из способов сделать это:

library(igraph)
df <- read.csv(text="from,to
1,2
1,2
1,3
1,2
1,3
1,2
1,2")
df$color <- with(df, ave(1:nrow(df), list(from, to), FUN=seq_along))
g <- graph_from_data_frame(df)
E(g)$color <- c("red", "blue", "yellow")[E(g)$color]
E(g)$color[is.na(E(g)$color)] <- "#CCCCCC"
plot(g)

введите здесь описание изображения

person lukeA    schedule 12.05.2017