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