Изменение цвета края на основе атрибута

#r #igraph

#r #igraph

Вопрос:

Я работаю над визуальным представлением сети в программном обеспечении R, используя igraph пакет.

У меня есть набор данных со связями между всеми узлами и для каждого звена/края районом, которому они назначены.

Итак, я хотел бы изменить цвет края каждого края в зависимости от каждого района, которому они назначены. В таблице выше показана структура таблицы.

нодей нодей склад1 склад2
4 5 1 0

В этом случае ссылка (4-5) назначается depot1, поэтому цвет края края должен быть, например, зеленым.

Комментарии:

1. пожалуйста, поделитесь воспроизводимым примером/данными.

Ответ №1:

Вот пример, с которым связаны края 1 , которые будут окрашены в «красный» и «зеленый» в противном случае:

 g lt;- make_ring(5) g %gt;%  set_edge_attr(  name = "color",  value = c("green", "red")[1   (rowSums(ends(., E(.)) == "1") gt; 0)]  ) %gt;%  plot()  

В вашем случае вы могли бы заменить "1" на "depot1" и попробовать.

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

Комментарии:

1. Спасибо! Это очень полезно.

Ответ №2:

Я попытался понять ваш вопрос, я создал node type , чтобы раскрасить края и узлы.

 library(igraph)  data lt;- read.table(text = " N D type 1 6 A 3 7 B 7 8 A 4 5 B 7 10 A 4 6 B 1 7 A 6 8 B 7 9 B 6 10 A ", header=T )  nodes lt;- data.frame(id=unique(c(data$N, data$D)) ) nodes$type lt;- c("A","B") # this if for the layout nodes$x lt;- c(1,3,7,4,7, 4, 1,6,7,6)  nodes$y lt;- c(6,7,8,5,10,,5, 7,8,9,10) nodes   G lt;- graph_from_data_frame(dd, vertices = nodes )   V(G)$color lt;- ifelse( V(G)$type == "A", "red", "green") E(G)$color lt;- ifelse( E(G)$type == "A", "red","green")  edge_attr(G) vertex_attr(G) plot(G)  

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