如何让ggplot2的expand_limits函数不添加额外绘图边距
问题原因
你观察到的y=1.5上方空白是ggplot2坐标轴的默认扩展机制导致的:默认情况下,ggplot2会为连续坐标轴自动添加5%的扩展缓冲区,避免数据点紧贴绘图边界,expand_limits(y=1.5)仅调整了数据范围的上限,没有修改坐标轴的默认扩展规则,因此系统会在你设定的1.5上限之上额外添加预留空白。
解决方法
你只需要为y轴显式指定expand参数为c(0,0),关闭坐标轴的扩展缓冲区即可,同时可以直接在scale定义中设置y轴上限,不需要额外调用expand_limits()。
修改后的fig2代码如下:
fig2 <- ggplot(data=dataf2, aes(y=percent,x=group)) + geom_bar(stat="identity") + theme(panel.background = element_blank()) + # 替换原来的expand_limits,关闭扩展并设置上限 scale_y_continuous(limits = c(NA, 1.5), expand = c(0,0)) + geom_rect(xmin=1,xmax=4,ymin=0,ymax=1.5,fill=NA,color="black")
修改后运行完整代码,y=1.5位置的矩形顶部会完全对齐绘图区域的上边界,不会再出现上方空白。
内容的提问来源于stack exchange,提问作者PaulB
相关产品推荐
相关产品推荐

