使用gg.gap生成间断y轴后图例消失,如何正确恢复?
解决gg.gap调用后图例消失的问题
问题根源
gg.gap在生成间断y轴时,默认会覆盖原ggplot对象的图例设置,仅指定add.legend=TRUE无法生效,必须同时明确图例的位置参数。
直接修复代码
在gg.gap函数中同时添加add.legend=TRUE和legend.position参数,即可恢复图例显示:
df<- data.frame( var1 = c(3.2,5.1,-25000,3.9,4.6,3.1), var2 = c(2020,2021,2022,2020,2021,2022), var3 = c("c","c","c","t","t","t") ) test<-ggplot(df, aes(x = as.factor(var2), y = var1, fill = var3)) + geom_col(position = position_dodge(width = 0.9)) + scale_fill_viridis_d() + # 色弱友好的viridis配色 labs( title = "分组柱状图", x = "年份", y = "变量1", fill = "组别" ) + theme_minimal() + theme(legend.position = "bottom") # 核心修改:同时指定add.legend和legend.position参数 gg.gap(plot=test, segments=c(-24900,0), ylim= c(-25000,10), add.legend=TRUE, legend.position="bottom")
备用方案(若上述方法失效)
如果仍无法显示图例,可以手动提取原ggplot的图例,再用gridExtra包组合图形与图例:
library(gridExtra) library(cowplot) # 从原图提取图例 plot_legend <- get_legend(test) # 生成不带图例的间断轴图形 gap_plot <- gg.gap(plot=test, segments=c(-24900,0), ylim= c(-25000,10)) # 组合图形与图例,调整高度比例优化布局 grid.arrange(gap_plot, plot_legend, ncol=1, heights=c(9,1))
内容的提问来源于stack exchange,提问作者Gonzalo de Quesada
相关产品推荐
相关产品推荐

