使用ggplotGrob时,如何避免grob名称中的随机后缀?
我只是注意到,每当我在ggplot对象上调用使用ggplotGrob时,如何避免grob名称中的随机后缀?,r,ggplot2,r-grid,R,Ggplot2,R Grid,我只是注意到,每当我在ggplot对象上调用ggplotGrob时,我都会得到不同的grob名称,特别是不同的后缀。当我选择并编辑一个grob的全名时,这可能是一个复制代码的问题,因为这个名称可能会随着新的运行而改变 例如,第二次运行时,panel.background..rect.6变为panel.background..rect.76 library(ggplot2) library(grid) p <- ggplot(data = iris, aes(x
ggplotGrob
时,我都会得到不同的grob名称,特别是不同的后缀。当我选择并编辑一个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
库(ggplot2)
图书馆(网格)
p.1-11-12-1
#>面板7-5-7-5
#>烧烤树
#>面板背景..矩形6
#第二轮
g布局
#>背景1-11-12-1
#>面板7-5-7-5
#>烧烤树
#>面板背景..rect.76
我认为set.seed()可以解决这个问题,但类似于这样:
set.seed(123)
g <- grid.force(ggplotGrob(p))
grid.ls(g)
set.seed(123)
g在C库级别有很多操作,很可能库调用并不关心R随机种子。到目前为止,我还没有看到任何迹象表明它将停止或可以控制。据我所知,对名称(或布局表)使用正则表达式是最推荐的方法。