#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)