关于理解使用sapply提取grobs结构的功能的问题

时间:2014-09-21 20:46:57

标签: r ggplot2

我正在尝试了解以下细分,尤其是sapply(tmp$grobs, function(x) x$name

require(gridExtra)
require(ggplot2)
my_hist <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()
tmp <- ggplot_gtable(ggplot_build(my_hist))
leg <- which(sapply(tmp$grobs, function(x) x$name) ==  "guide-box")
legend <- tmp$grobs[[leg]]

我认为此函数用于提取tmp$grobs的名称,如下所示

enter image description here

然后我试过了。第一个问题,如何理解结构,如[[1]];此外,为什么(tmp$grobs[1])$name不起作用。

enter image description here

1 个答案:

答案 0 :(得分:2)

这不是您问题的答案,而是编码建议

require(ggplot2)
my_hist <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()
tmp <- ggplotGrob(my_hist)
legend <- tmp$grobs[[grep("guide-box", tmp$layout$name)]]