【问题标题】:r igraph - plot communies and selectively highlight somer igraph - 绘制社区并有选择地突出一些
【发布时间】:2018-11-11 14:16:47
【问题描述】:

Here 与我的问题类似。我正在使用@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)

在这个例子中,我改变了可以改变社区的颜色,但没有选择要突出显示的社区。预期的解决方案仅突出显示选定的社区,例如第一个和第三个社区。有需要吗?

【问题讨论】:

    标签: r plot igraph


    【解决方案1】:

    我认为您的意思是您不希望组 2 周围的多边形。您可以通过将 mark.bordermark.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)
    

    加法:

    根据 cmets,我推测您有一个集群列表要突出显示并希望从该列表中工作。只需为“未突出显示”(我使用“深灰色”)选择一个点颜色,并将多边形颜色设置为 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)
    

    【讨论】:

    • 嗨@G5W。这适用于提供的示例,但我的实际网络有很多社区。您是否知道一种方法来突出显示按名称或索引选择的社区,而不是指定所有的参数?
    • 在回答中更具体。
    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 2014-03-25
    • 2021-09-03
    • 2016-09-19
    • 2020-01-27
    • 2017-11-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多