按边属性创建多个网络图
create multiple network plots by edge attribute
我有一个带有许多边属性的 igraph 网络对象。一个边缘属性根据数字对网络类型进行分类(例如 1 = 友谊,2 = 建议)。我想分别绘制每种类型的网络。但是,我不想创建单独的子图。我想为所有网络类型保持相同的布局,只使用一个 igraph 网络对象。在 iGraph 文档中,如何做到这一点对我来说并不明显。有人可以帮我吗?
我相信在 igraph
中没有直接的方法可以做到这一点。这是有道理的,因为这些是 属性 ;即,一些额外的而不是指定边缘类型的标准方法。因此,我认为一个好的选择是在绘制图形时简单地改变边集,如下例所示:
library(igraph)
g <- make_ring(10) %>%
set_edge_attr("weight", value = 1:10) %>%
set_edge_attr("color", value = "red")
plot(g %>% delete_edges(which(edge_attr(g)$weight > 5)))
plot(g %>% delete_edges(which(edge_attr(g)$weight <= 5)))
如果绘制两次图形并在每次绘制之前设置相同的 set.seed()
,则布局应该相同。然后你可以根据你想要显示的边缘制作边缘 transparent/visible 。
我有一个带有许多边属性的 igraph 网络对象。一个边缘属性根据数字对网络类型进行分类(例如 1 = 友谊,2 = 建议)。我想分别绘制每种类型的网络。但是,我不想创建单独的子图。我想为所有网络类型保持相同的布局,只使用一个 igraph 网络对象。在 iGraph 文档中,如何做到这一点对我来说并不明显。有人可以帮我吗?
我相信在 igraph
中没有直接的方法可以做到这一点。这是有道理的,因为这些是 属性 ;即,一些额外的而不是指定边缘类型的标准方法。因此,我认为一个好的选择是在绘制图形时简单地改变边集,如下例所示:
library(igraph)
g <- make_ring(10) %>%
set_edge_attr("weight", value = 1:10) %>%
set_edge_attr("color", value = "red")
plot(g %>% delete_edges(which(edge_attr(g)$weight > 5)))
plot(g %>% delete_edges(which(edge_attr(g)$weight <= 5)))
如果绘制两次图形并在每次绘制之前设置相同的 set.seed()
,则布局应该相同。然后你可以根据你想要显示的边缘制作边缘 transparent/visible 。