微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 网络分析:边和顶点的颜色

如何解决R 网络分析:边和顶点的颜色

我用 R 中的 igraph-Package 创建了一个图表。

created Graph

现在我想让图表更加丰富多彩。我想根据数据集中的“派对”类型为我的网络着色。我的数据集如下所示:

    Screen.name     mentions           party
  1 @A_Gloeckner    @MartinSchulz      SPD
  2 @A_Gloeckner    @MartinSchulz      SPD
  3 @A_Gloeckner    @MartinSchulz      SPD
  4 @A_Gloeckner    @ManuelaSchwesig   SPD
  5 @A_Gloeckner    @sigmargabriel     SPD
  6 @A_Gloeckner    @nahlesMeine       SPD
  ... ...           ...                ...
 33 @A_Schillhaneck @BA_Mitte_Berlin   GRNE
 34 @A_Schillhaneck @nytimes           GRNE
 35 @A_Schillhaneck @nutellaberliner   GRNE

这是我创建图表的代码

gj <- graph.data.frame(joined_df,directed = TRUE)
plot(gj,vertex.label = NA,vertex.size = 2,edge.arrow.size = 0.1,vertex.label.cex = 0.8,layout = layout.fruchterman.reingold)

图表:

> gj
IGRAPH c5ba2ee DN-- 1279 2147 -- 
+ attr: name (v/c),color (v/c),party (e/c)
+ edges from c5ba2ee (vertex names):
[1] @A_Gloeckner->@MartinSchulz    @A_Gloeckner->@MartinSchulz    
@A_Gloeckner->@MartinSchulz   
[4] @A_Gloeckner->@ManuelaSchwesig @A_Gloeckner->@sigmargabriel   
@A_Gloeckner->@nahlesMeine    
[7] @A_Gloeckner->@Willy           @a_grotheer ->@NSC_CPMR        @a_grotheer 
 ->@SouthendRNLI   
[10] @a_grotheer ->@weserkurier     @a_grotheer ->@werderbremen    
@a_grotheer ->@ribasdiego10        
+ ... omitted several edges

现在我希望每个不同的“派对”的边缘和顶点都是自己的颜色。在这种情况下,我只有两个不同的团体(“SPD”、“GRNE”)。 我希望每个带有“party”-Value“SPD”的节点和顶点都是红色的,每个带有“GRNE”的值都是绿色的。

有人知道怎么做吗?

我知道我可以使用 vertex.color = "red"edge.color = "red" 更改颜色,但我不知道如何设置依赖项的颜色。

预先感谢您的帮助!

解决方法

您可以像下面那样使用 set_edge_attr

graph.data.frame(joined_df,directed = TRUE) %>%
  set_edge_attr(name = "color",value = c("red","green")[match(joined_df$party,c("SPD","GRNE"))]) %>%
  plot(
    vertex.label = NA,vertex.size = 2,edge.arrow.size = 0.1,vertex.label.cex = 0.8,layout = layout.fruchterman.reingold
  )

enter image description here


如果你有更多的颜色并且想自动给边缘上色,你可以试试

graph.data.frame(joined_df,value = factor(joined_df$party)) %>%
  plot(
    vertex.label = NA,layout = layout.fruchterman.reingold
  )

对于颜色值,应该使用 factor 而不是 party

enter image description here

虚拟数据

> dput(joined_df)
structure(list(Screen.name = c("@A_Gloeckner","@A_Gloeckner","@A_Schillhaneck","@A_Schillhaneck"),mentions = c("@MartinSchulz","@MartinSchulz","@ManuelaSchwesig","@sigmargabriel","@nahlesMeine","@BA_Mitte_Berlin","@nytimes","@nutellaberliner"
),party = c("SPD","SPD","GR<dc>NE","GR<dc>NE")),class = "data.frame",row.names = c("1","2","3","4","5","6","33","34","35"))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。