r igraph - составьте коммюнике и выделите некоторые - PullRequest
0 голосов
/ 11 ноября 2018

( Здесь - вопрос, похожий на мой. Я использую пример, предоставленный @Slow loris в его превосходном ответе)

Я пытаюсь построить igraph сообществ, но выделяю только выбранные сообщества. Как мне это сделать?

library(igraph)

# Generate random graph and community structure
set.seed(23)
temp <- sample_gnm(15, 45)
wctemp <- walktrap.community(temp)

# Plot
par(mfrow=c(1,2), mar=rep(1,4))
layout <-layout.fruchterman.reingold(temp)
plot(wctemp, temp, layout=layout, vertex.label=NA, vertex.size=5,  edge.arrow.size=.2)
# Change colors of nodes, polygons, and polygon borders
new_cols <- c("white", "red", "black")[membership(wctemp)]
plot(wctemp, temp, col=new_cols, mark.border="black", mark.col=c("tan", "pink", "lightgray"), 
     layout=layout, vertex.label=NA, vertex.size=5, edge.arrow.size=.2)

enter image description here

В этом примере я могу изменить цвет сообщества, но не могу выбрать, какие из них выделить. Ожидаемое решение выделяет только отдельные сообщества, скажем, первое и третье. Любые занимает?

1 Ответ

0 голосов
/ 11 ноября 2018

Я думаю, что вы имеете в виду, что вам не нужен многоугольник вокруг группы 2. Вы можете получить этот эффект, установив mark.border и mark.col в NA.

plot(wctemp, temp, col=new_cols, mark.border=c("black", NA, "black"), 
     mark.col=c("tan", NA, "lightgray"), 
     layout=layout, vertex.label=NA, vertex.size=5, edge.arrow.size=.2)

graph with selected groups highlighted

Дополнение:

Основываясь на комментариях, я понял, что у вас есть список кластеров, которые нужно выделить, и вы хотите работать из этого списка. Просто выберите точечный цвет для «не выделено» (я использовал «темно-серый») и сделайте цвета многоугольника NA, кроме выделенных сообществ.

ToHighlight = c(1,3)

PCol = rep("darkgray", length(unique(wctemp$membership)))
PCol[ToHighlight] = rainbow(length(ToHighlight))
new_cols <- PCol[membership(wctemp)]

HCol = rep(NA, length(unique(wctemp$membership)))
HCol[ToHighlight] = rainbow(length(ToHighlight), alpha=0.15)

plot(wctemp, temp, col=new_cols, mark.border=HCol, mark.col=HCol, 
     layout=layout, vertex.label=NA, vertex.size=5, edge.arrow.size=.2)

Second version of highlighted communities

...