使用另一个数据框突出显示 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 一个顶点列表,它允许您根据不同的属性进行特殊的子集化。请注意,这实际上会更改图形数据本身。