经gtable修改后重建的ggplot对象无法应用theme()的问题求助
经gtable修改后重建的ggplot对象无法应用theme()的问题求助
我最近在尝试修改ggplot对象里的元素,操作流程是这样的:先把ggplot对象通过ggplot_gtable()和ggplot_build()转换成gtable,接着用grid::editGrob()做需要的修改,最后用cowplot包里的ggdraw()和draw_grob()把修改后的gtable重新转成ggplot对象。
大部分情况下这套流程都能正常工作,但我遇到了一个头疼的问题:重新生成的ggplot对象完全不响应theme()的设置!
给大家看个具体的示例代码:
library(ggplot2) library(cowplot) data(iris) # 生成原始ggplot图 p1 <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) + geom_point() # 转换为gtable gt <- ggplot_gtable(ggplot_build(p1)) # 用cowplot重建为ggplot对象 p2 <- ggdraw() + draw_grob(gt) # 原始图用theme完全生效,能成功隐藏图例 p1 + theme(legend.position = "none") # 但重建后的p2加theme完全被忽略,图例依然显示 p2 + theme(legend.position = "none")
有没有大佬能教教我,怎么才能让这种经gtable修改后重建的ggplot对象正常应用theme()的设置呢?
备注:内容来源于stack exchange,提问作者DyedPurple
相关产品推荐
相关产品推荐

