Как избежать случайных суффиксов в именах гробов при использовании ggplotGrob? - PullRequest
0 голосов
/ 28 ноября 2018

Я только что заметил, что всякий раз, когда я вызываю ggplotGrob для объекта ggplot, я получаю разные имена гробов - в частности, разные суффиксы.Это может быть проблемой для воспроизведения кода, когда я выбираю и редактирую grob по его полному имени, потому что это имя может измениться при новом запуске.

Например, panel.background..rect.6 становится panel.background..rect.76 при втором запуске.

library(ggplot2)
library(grid)

p <- ggplot(data = iris, 
            aes(x = Sepal.Length, 
                y = Sepal.Width,
                colour = Species)) +
  geom_point()

# First run
g <- grid.force(ggplotGrob(p))
grid.ls(g)
#> layout
#>   background.1-11-12-1
#>   panel.7-5-7-5
#>     grill.gTree.15
#>       panel.background..rect.6

# Second run
g <- grid.force(ggplotGrob(p))
grid.ls(g)
#> layout
#>   background.1-11-12-1
#>   panel.7-5-7-5
#>     grill.gTree.85
#>       panel.background..rect.76

Я думал, что set.seed () решит проблему, но примерно так:

set.seed(123)
g <- grid.force(ggplotGrob(p))
grid.ls(g)

дает также разные суффиксы при каждом запуске.

Я понимаю, что ggplotGrob(x) на самом деле ggplot_gtable(ggplot_build(x)), но я не смог найти / понять ни аргумента ни в ggplot_gtable, ни в ggplot_build, чтобы остановить случайные суффиксы.

Я могу обойтись, используя регулярное выражение для выбора имен гробов, избегая ловушки суффиксов, но задавался вопросом, можно ли каким-то образом установить случайное именование суффиксов.

...