题
如何以编程方式找出任何给定的ggplot
对象是否具有图例?我当时想先转换为grob
并检查布局中是否有guide-box
,但这感觉有点。关于如何以可靠且可复制的方式执行此操作的任何建议?
码
library(ggplot2)
library(grid)
bp <- ggplot(iris, aes(Petal.Length, Petal.Width)) + theme(legend.position = "top")
noLegend <- bp + geom_point()
withLegend <- bp + geom_point(aes(color = Species))
gNoLegend <- ggplotGrob(noLegend)
gWithLegend <- ggplotGrob(withLegend)
any(gNoLegend$layout$name == "guide-box")
# [1] FALSE
any(gWithLegend$layout$name == "guide-box")
# [1] TRUE
最佳答案
一个简单的函数(尽管我认为您的方法也可以):
check_for_legend <- function(x) {
'gtable' %in% class(try(cowplot::get_legend(x), silent = TRUE))
}
check_for_legend(noLegend)
FALSE
check_for_legend(withLegend)
TRUE
关于r - 确定ggplot是否具有图例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41997200/