Настройка атрибутов подграфа / кластера в Rgraphviz - PullRequest
0 голосов
/ 29 мая 2018

Я хочу построить график через 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

Теперь я хочу определить два кластера / подграфа.Это можно сделать следующим образом:

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)

К сожалению, это не так.Как уже упоминалось, я хотел бы создать свои кластеры (аналогично этому 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)

Я надеюсь, что кто-то может помочь!Спасибо

...