我想通过Rgraphviz绘制图形,但我无法处理我设置的集群的设计属性。
在SO和elsewhere上已经存在类似的问题,但没有一个问题具有真正的最小工作示例,并且没有一个问题得到解答。所以我想尝试提出一个完整的问题来获得完整的答案。作为该软件包的介绍,我阅读了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 )
现在我要定义两个集群/子图。这可以这样做:
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页,可以简单地将一个名为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)
我希望有人可以提供帮助!谢谢