ggplot2中如何反转geom_area的填充区域?
解决ggplot2中geom_area填充折线另一侧区域的问题
我明白你的问题啦!你现在用geom_area()的时候,因为你的b列都是负数,它默认会填充从y=0到折线(负数)之间的区域——也就是你说的“折线上方”。要填充另一侧(折线到更靠下的区域),其实只要指定geom_area()的基线(ymin参数)就可以了,下面给你两种实用的解决方法:
方法一:指定自定义基线(推荐)
你可以通过ymin参数设置一个比你数据中最小y值还低的基线,这样geom_area()就会填充这条基线到折线之间的区域。比如用你数据中b的最小值作为基线:
# 先重现你的数据 a = seq(10, 100, 5) b = -(runif(19, 0, 50)) mydata <- data.frame(a, b) # 修改后的代码,填充折线到最小y值的区域 ggplot(data = mydata, aes(x = a, y = b)) + geom_area(aes(ymin = min(b)), fill = "#619CFF")
如果你想固定一个基线值(比如你的b范围是-50到0,那可以直接设ymin = -50),效果也是一样的。
方法二:反转y轴(视觉上的替代方案)
如果你只是想让填充区域看起来在折线的“下方”,也可以反转y轴的方向,这样原来的填充区域就会跑到视觉上的下方:
ggplot(data = mydata, aes(x = a, y = b)) + geom_area(fill = "#619CFF") + scale_y_reverse()
不过这种方法只是改变了坐标轴的显示方向,并没有真正改变填充的区域范围,所以更推荐第一种方法来精准控制填充区域。
内容的提问来源于stack exchange,提问作者Strobila
相关产品推荐
相关产品推荐

