基于igraph中属性列表元素的颜色节点

时间:2018-08-10 14:00:55

标签: r igraph

我创建了一个具有一些节点和边缘的网络。

g <- graph.formula(4506-8974, 8974-6345, 7842-4653, 4653-6345, 7842-8974)
V(g)$name <- c("4506", "8974", "6345", "7842", "4653")

我对让节点具有基于我的初始dataframe的关键字属性感兴趣。其中V(g)$keyword显示节点的关键字。我的数据框采用矩阵的形式,其中行是节点,列是关键字。请参见下面的示例。

df <- data.frame("agriculture" = c(1,1,0,0,0), "arts" = c(0,0,0,1,0), "banks" = c(1,0,1,0,0),
   "cities" = c(0,0,0,1,0), "companies" = c(0,0,0,0,1))
rownames(df) <- c("4506", "8974", "6345", "7842", "4653")


NodeID  agriculture  arts  banks  cities  companies
4506      1          0      1       0        0
8974      1          0      0       0        0
6345      0          0      1       0        0
7842      0          1      0       1        0
4653      0          0      0       0        1

因此,我应用了以下代码行来创建属性。到目前为止一切正常。

V(g)$keyword <- apply(df, 1, function(x) names(df)[x == 1])

V(g)$keyword[1]
#[1] "agriculture" "banks"
V(g)$keyword[2]
#[2] "agriculture"

但是,我的问题是尝试根据该特定属性为节点着色时。假设我要为具有关键字“农业”的节点着色。该图仅将节点“ 8974”涂成红色,因为节点“ 4506”关键字属性采用“农业”和“银行”均为关键字的列表形式。因此,它不考虑它。如何更改代码,使ifelse函数也出现在列表中?

V(g)$color <- ifelse(V(g)$keyword == "agriculture", "red", "blue")
plot(g)

0 个答案:

没有答案
相关问题