Я хочу построить график через Rgraphviz, но не могу обработать атрибуты дизайна кластеров, которые я установил.
Подобные вопросы уже есть по SO и в других местах , но ни один из них не имеет реального минимального рабочего примера, и ни на один из них не дан ответ.Поэтому я хочу попытаться задать полный вопрос, чтобы получить полный ответ.В качестве введения в пакет я прочитал статью «Как построить график, используя 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](https://i.stack.imgur.com/HFfRL.png)
Теперь я хочу определить два кластера / подграфа.Это можно сделать следующим образом:
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](https://i.stack.imgur.com/awRq3.png)
Итак, очевидно, что произошли изменения в настройке, и хотя было бы удобно, если бы кластеры были немного более разделены, результат в порядке.
Теперь, если я хочу определить специфичные для кластерастили или попытаться создать их, у меня начинаются проблемы.Согласно странице 4 упомянутой вводной статьи, можно просто добавить элемент с именем attrs
в подсписки subGlist
.
Насколько я понимаю, должен работать следующим образом:
subGList[[1]] <- list(graph = sg1,
cluster = TRUE,
attrs = c(fontcolor = "red"))
plot(g1, attrs = attrs, subGList = subGList)
К сожалению, это не так.Как уже упоминалось, я хотел бы создать свои кластеры (аналогично этому 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)
Я надеюсь, что кто-то может помочь!Спасибо