我正在为以下y范围在ggplot中添加四个透明带:
y<2 & y>1.5
y<1.5 & y>1
y<1 & y>0.5
y<0.5 & y>0
我不希望范围重叠,因为那样会改变我为每个频段分配的颜色(因为它们是透明的)。
使用geom_area
后,我可以得到类似的效果(请参见下面的代码),但是它们重叠,从而改变了颜色。
我想知道是否有更好的方法在我想要的区域获得乐队?
df <- data.frame(y1=rep(1.99, 100),
y2=rep(1.49, 100),
y3=rep(0.99, 100),
y4=rep(0.49, 100),
x =1:100)
ggplot(aes(x=x), data = df) +
geom_area(aes(y=ifelse(y1<2 & y1>1.5, y1, 0)), data=df, fill="yellow", alpha = 0.3) +
geom_area(aes(y=ifelse(y2<1.5 & y2>1, y2, 0)), data=df, fill="darkgoldenrod1", alpha = 0.3) +
geom_area(aes(y=ifelse(y3<1 & y3>0.5, y3, 0)), data=df, fill="darkorange1", alpha = 0.3) +
geom_area(aes(y=ifelse(y4<0.5 & y4>0, y4, 0)), data=df, fill="darkred", alpha = 0.3) +
theme_classic()
任何帮助将不胜感激:)
编辑:还有一个潜在的独立问题,是否有一种方法可以使填充颜色一直到轴,而不是仅在轴周围留白缓冲区?
答案 0 :(得分:2)
在绘制任何点之前使用geom_rect
ggplot() +
geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = 1.5, ymax = 2), fill="yellow", alpha = 0.3) +
geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = 1, ymax = 1.5), fill="darkgoldenrod1", alpha = 0.3) +
geom_point(data = df, aes(x = x, y = y1)) +
theme_classic()
请参见geom_rect and alpha - does this work with hard coded values?,以使Alpha可以正确地与矩形配合使用。