Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ggplotGrob时,如何避免grob名称中的随机后缀?_R_Ggplot2_R Grid - Fatal编程技术网

使用ggplotGrob时,如何避免grob名称中的随机后缀?

使用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

我只是注意到,每当我在ggplot对象上调用
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随机种子。到目前为止,我还没有看到任何迹象表明它将停止或可以控制。据我所知,对名称(或布局表)使用正则表达式是最推荐的方法。