Настройка атрибутов подграфа / кластера в Rgraphviz

Я хочу построить график через 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) дает следующий результат: введите описание изображения здесь

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

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)

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

Другие вопросы по тегам