R 将水平矩形添加到ggplot2中的分类箱线图

R 将水平矩形添加到ggplot2中的分类箱线图,r,ggplot2,R,Ggplot2,我想制作一个盒形图,在图的后面有一个水平矩形(或更高的不透明度)。我不知道如何使用分类x轴值来实现这一点,并强制它扩展绘图区域的整个宽度。这很有帮助,但我不确定如何将矩形延伸到绘图区域的边缘 假设我们想在钻石上做一个矩形,切割值在3000美元和5000美元之间。我尝试了下面的代码,但它没有扩展到绘图的边缘 rectangle <- data.frame(x = c("Fair","Good","Very good", "Premium", "Ideal"),

我想制作一个盒形图,在图的后面有一个水平矩形(或更高的不透明度)。我不知道如何使用分类x轴值来实现这一点,并强制它扩展绘图区域的整个宽度。这很有帮助,但我不确定如何将矩形延伸到绘图区域的边缘

假设我们想在
钻石上做一个矩形,切割值在3000美元和5000美元之间。我尝试了下面的代码,但它没有扩展到绘图的边缘

rectangle <- data.frame(x = c("Fair","Good","Very good", "Premium", "Ideal"), 
                    lower = rep(3000, 5),
                    upper = rep(5000, 5))
ggplot() +
  geom_boxplot(data=diamonds, aes(x=cut, y=price)) +
  geom_rect(data=rectangle, aes(xmin="Fair", xmax="Ideal", 
                                ymin=lower, ymax=upper), alpha=0.1)

rectangle要获得面板边缘的矩形,可以将限制设置为+/-Inf

同样,对于这样的单个矩形(不映射任何美学效果),仅使用
annotate

annotate("rect", xmin=-Inf, xmax=Inf, ymin=3000, ymax=5000, alpha=0.4)
但是为了完整性,您仍然可以使用
geom\u rect
调用

geom_rect(aes(xmin=-Inf, xmax=Inf, ymin=3000, ymax=5000), alpha=0.4)
通过更改几何图形的顺序,可以将矩形移动到箱线图后面

ggplot(diamonds, aes(x=cut, y=price)) +
    geom_blank() +
    annotate("rect", xmin=-Inf, xmax=Inf, ymin=3000, ymax=5000) +
    geom_boxplot()