Есть ли простой способ взять произвольную функцию с серией вызовов функции grid. * И действиями в области просмотра, как первая функция ниже, и вернуть объект gTree / grob, подобный тому, который сгенерирован второй функцией?
Я спрашиваю, так как гораздо проще экспериментировать с поэтапным созданием графиков с использованием функций grid. *, Чем использовать довольно громоздкий синтаксис для создания сложных gTrees. Однако тогда, когда вам нужно использовать свои графики в рамках более крупных элементов графика или комбинированных графиков, я стремлюсь получить их в форме gTree, а не записывать их на устройство печати самостоятельно.
Я изо всех сил пытался ухватиться grid
на какое-то время, и я чувствую, что что-то упустил даже после того, как углубился в документацию, кажется, что должен быть более простой способ создания сложных gTrees?
library(grid)
plotter <- function(x){
pushViewport(viewport(gp = gpar(fill = "white", col = "black", lwd = 2)))
grid.rect(
width = 0.3, height = 0.8,
gp = gpar(fill = "red")
)
}
grid.newpage()
plotter()
plotter2 <- function(x) {
g <- gTree()
g <- addGrob(
g,
rectGrob(
width = 0.3, height = 0.8,
gp = gpar(fill = "red"),
vp = "vp"
)
)
g$childrenvp <- viewport(name = "vp", gp = gpar(fill = "white", col = "black", lwd = 2))
g
}
grid.newpage()
grid.draw(plotter2())