如何在 R 中渲染 igraph

How to render igraph in R

有以下代码的数据集。我需要在不改变框架的情况下获得如图所示的图表。我尝试使用 rbind 向数据框添加更多层次结构,以便获得如图所示的图表。 col0col1 数据根据数据发生变化,而 col2 始终保持不变。

df <- data.frame(col0 = c("Cat Dog Wolf", "Cat Dog Wolf", "Cat Dog Wolf"),
col1 = c( "Cat", "Dog", "Wolf"),
col2 = c( "Feline", "Canis", "Canis2"))

df <-rbind(df, data.frame(col0="Cat Dog Wolf", col1 = "Canis2", col2 = "Canis"))

df <-df[c('col1', 'col2')]
names(df) <-c('from', 'to')
abc <-union(df$to, df$from)
g <-graph.data.frame(df, directed = TRUE, vertices = abc)
plot(g, vertex.size = 20, vertex.label.dist = 0.5, vertex.color = "blue",
edge.arrow.size = 0.5, layout = layout.reingold.tilford(g))

您只需要取自两列("From" 和 "To")的三个边。但是 df 中有三列,因此您必须从中进行选择。我创建了一个新列,将 col1col2 中的名称粘贴在一起。然后,我选择了顶部的前两个顶点和 rbind 第三个。

df <- data.frame(col0 = "Cat Dog Wolf",
col1 = c( "Cat", "Dog", "Wolf"),
col2 = c( "Feline", "Canis", "Canis2"))
df$col1_2 <- paste(df$col2,df$col1)

df <-  rbind(df[1:2,c(1,4)],data.frame(col0=df[2,4],col1_2=df[3,4]))

names(df) <-c('from', 'to')
abc <-union(df$to, df$from)
g <-graph.data.frame(df, directed = TRUE, vertices = abc)
plot(g, vertex.size = 20, vertex.label.dist = 0.5, vertex.color = c("lightblue","red","green","white"),
edge.arrow.size = 0.5, layout = layout.reingold.tilford(g))