使用另一个数据框突出显示 Igraph 图中的某些元素
Highlighting certain elements in Igraph plot using another dataframe
我正在尝试构建网络图。请参阅下面的水果示例。实际上,我的数据集更大并且包含不同的数据,但为了清楚起见,我对其进行了简化。
输入密码
#Create empty matrix ----
newMatrix <- matrix(0, nrow = 5, ncol = 5)
colnames(newMatrix) <- c("Apple", "Pear", "Orange", "Mango", "Banana")
rownames(newMatrix) <- c("Apple", "Pear", "Orange", "Mango", "Banana")
#Create dataframe ----
newDf <- data.frame(c("Juice 1", "Juice 2", "Juice 3", "Juice 4","Juice 5"),
c("Banana", "Banana", "Orange", "Pear", "Apple"),
c("Pear", "Orange", "Pear", "Apple", "Pear"),
c("Orange", "Mango", NA, NA, NA))
colnames(newDf) <- c("Juice", "Fruit 1", "Fruit 2", "Fruit 3")
m <- do.call(cbind, apply(newDf[-1], 1, \(x) if(sum(complete.cases(x)) >= 2) combn(x, m = 2) else x, simplify = F))
g <- graph_from_data_frame(na.omit(t(m)), directed = F)
adj.fruit <- get.adjacency(g, sparse = F)
adj.fruit <- graph_from_adjacency_matrix(adj.fruit)
plot(adj.fruit)
这个returns下面是我的水果图:
我现在想用不同的颜色给顶点上色。我有一个列表,指定哪些应该在 'light blue' 中着色。请参阅下面的输入:
highlightedfruits <- data.frame(c("Apple", "Pear"))
所以我想用淡蓝色突出显示苹果和梨顶点的颜色,但我不知道该怎么做。对于我的真实数据,我想使用类似的数据框,所以请帮助我找到使用数据框的解决方案。
如果有人能帮忙就太好了!此外,如果您有任何其他使它看起来更好的提示和技巧,我们也将不胜感激。我对此很陌生。
谢谢!
如果你想控制每个顶点的颜色,你可以给它们一个颜色属性。例如
V(adj.fruit)$color <- "orange"
V(adj.fruit)[name %in% highlightedfruits[[1]] ]$color <- "lightblue"
plot(adj.fruit)
V()
函数 returns 一个顶点列表,它允许您根据不同的属性进行特殊的子集化。请注意,这实际上会更改图形数据本身。
我正在尝试构建网络图。请参阅下面的水果示例。实际上,我的数据集更大并且包含不同的数据,但为了清楚起见,我对其进行了简化。
输入密码
#Create empty matrix ----
newMatrix <- matrix(0, nrow = 5, ncol = 5)
colnames(newMatrix) <- c("Apple", "Pear", "Orange", "Mango", "Banana")
rownames(newMatrix) <- c("Apple", "Pear", "Orange", "Mango", "Banana")
#Create dataframe ----
newDf <- data.frame(c("Juice 1", "Juice 2", "Juice 3", "Juice 4","Juice 5"),
c("Banana", "Banana", "Orange", "Pear", "Apple"),
c("Pear", "Orange", "Pear", "Apple", "Pear"),
c("Orange", "Mango", NA, NA, NA))
colnames(newDf) <- c("Juice", "Fruit 1", "Fruit 2", "Fruit 3")
m <- do.call(cbind, apply(newDf[-1], 1, \(x) if(sum(complete.cases(x)) >= 2) combn(x, m = 2) else x, simplify = F))
g <- graph_from_data_frame(na.omit(t(m)), directed = F)
adj.fruit <- get.adjacency(g, sparse = F)
adj.fruit <- graph_from_adjacency_matrix(adj.fruit)
plot(adj.fruit)
这个returns下面是我的水果图:
我现在想用不同的颜色给顶点上色。我有一个列表,指定哪些应该在 'light blue' 中着色。请参阅下面的输入:
highlightedfruits <- data.frame(c("Apple", "Pear"))
所以我想用淡蓝色突出显示苹果和梨顶点的颜色,但我不知道该怎么做。对于我的真实数据,我想使用类似的数据框,所以请帮助我找到使用数据框的解决方案。
如果有人能帮忙就太好了!此外,如果您有任何其他使它看起来更好的提示和技巧,我们也将不胜感激。我对此很陌生。
谢谢!
如果你想控制每个顶点的颜色,你可以给它们一个颜色属性。例如
V(adj.fruit)$color <- "orange"
V(adj.fruit)[name %in% highlightedfruits[[1]] ]$color <- "lightblue"
plot(adj.fruit)
V()
函数 returns 一个顶点列表,它允许您根据不同的属性进行特殊的子集化。请注意,这实际上会更改图形数据本身。