我正在尝试使用 heightDetails() 找出 ggplot 图例的高度,但出现错误
UseMethod(“absolute.units”)中的错误:没有适用于“absolute.units”的适用方法应用于“unit”类的对象
示例:对于提取,我使用了此处建议的函数 g_legend :
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
return(legend)
}
所以假设我们有一个简单的条形图
testplot <- ggplot(mtcars, aes(x=as.factor(gear), fill=as.factor(gear))) + geom_bar()
, 我用
testlegend <- g_legend(testplot)
得到传说。is.grob(testlegend) 表明它确实是一个 grob,而 grid.draw(testlegend) 工作得很好。但是 heightDetails(testlegend) 给了我上面提到的异常。
我的猜测是 testlegend$heights 包含一个单位的总和,而 heightDetails 无法处理它。这是原因吗?如果没有,为什么它不起作用?检索图例高度的另一种方法是什么?