Краевая раскраска графа в 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 Я хочу, чтобы он был желтым. Это возможно? Благодарю.

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)

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

Другие вопросы по тегам