在Rgraphviz中设置子图/集群属性

时间:2018-05-29 12:47:42

标签: r graph graphviz r-graphviz

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

SOelsewhere上已经存在类似的问题,但没有一个问题具有真正的最小工作示例,并且没有一个问题得到解答。所以我想尝试提出一个完整的问题来获得完整的答案。作为该软件包的介绍,我阅读了Gentry,Gentleman和Huber的paper“如何使用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)绘制它会得到以下结果:enter image description here

现在我要定义两个集群/子图。这可以这样做:

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)

enter image description here

所以,显然,设置已经发生了变化,即使将集群分开一点也很方便,结果还可以。

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

根据我的理解,以这种方式工作:

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

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

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

我的完整代码:

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)

我希望有人可以提供帮助!谢谢

0 个答案:

没有答案