我想通过 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 )
现在我想定义两个集群/子图。这可以通过以下方式完成:
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 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)
我希望有人能帮帮忙!谢谢