首页 > 解决方案 > 在 Rgraphviz 中设置子图/集群属性

问题描述

我想通过 Rgraphviz 绘制图表,但我无法处理我设置的集群的设计属性。

SO其他地方已经有类似的问题,但没有一个真正的最小工作示例,并且没有一个得到回答。所以我想尝试提出一个完整的问题以获得完整的答案。作为对该软件包的介绍,我阅读了Gentry、Gentleman 和 Huber的论文“How To Plot A Graph Using Rgraphviz”。

我的示例网络:

library(Rgraphviz)

set.seed(123)
V <- letters[1:6]
M <- 1:4
g1 <- randomGraph(V, M, 0.2)

如果我想绘制它,我可以很容易地通过列表给它一些属性:

attributes <- list(node = list(shape = "rectangle", fixedsize = FALSE), 
              graph = list(layout = "dot", bgcolor = "transparent"))

plot(g1, attrs = attributes )

通过绘制它plot(g1)会得到以下结果:在此处输入图像描述

现在我想定义两个集群/子图。这可以通过以下方式完成:

sg1= subGraph(c("a", "e", "f"), g1)
sg2= subGraph(c("b", "c", "d"), g1)
subGList <- vector(mode = "list", length = 2)
subGList[[1]] <- list(graph = sg1, cluster = TRUE)
subGList[[2]] <- list(graph = sg2, cluster = TRUE)

现在再次绘制图形,包括一个subGlist参数:

plot(g1, attrs = attributes , subGList = subGList)

在此处输入图像描述

因此,显然,设置发生了变化,即使将集群分开一点会很方便,但结果还可以。

现在,如果我想定义特定于集群的样式或尝试将它们框起来,我就会遇到问题。根据上述介绍性论文的第 4 页,可以简单地将一个名为的元素添加attrssubGlist.

据我了解,它应该以这种方式工作:

subGList[[1]] <- list(graph = sg1,
                      cluster = TRUE,
                      attrs = c(fontcolor = "red"))

plot(g1, attrs = attrs, subGList = subGList)

不幸的是,事实并非如此。如前所述,我想构建我的集群(类似于this SO post),但由于我什至无法处理集群的字体颜色,我认为我犯了一个更根本的错误。

我的完整代码:

library(Rgraphviz)

set.seed(123)
V <- letters[1:6]
M <- 1:4
g1 <- randomGraph(V, M, 0.2)

attributes <- list(node = list(shape = "rectangle", fixedsize = FALSE), 
                   graph = list(layout = "dot", bgcolor = "transparent"))

#plot(g1, attrs = attributes )

sg1= subGraph(c("a", "e", "f"), g1)
sg2= subGraph(c("b", "c", "d"), g1)
subGList <- vector(mode = "list", length = 2)
subGList[[1]] <- list(graph = sg1, cluster = TRUE)
subGList[[2]] <- list(graph = sg2, cluster = TRUE)

#plot(g1, attrs = attributes , subGList = subGList)

subGList[[1]] <- list(graph = sg1,
                      cluster = TRUE,
                      attrs = c(fontcolor = "red"))

plot(g1, attrs = attrs, subGList = subGList)

我希望有人能帮帮忙!谢谢

标签: rgraphgraphvizr-graphviz

解决方案


推荐阅读