仅在图表的一个区域上更改背景颜色

Meg*_*gan 8 background r ggplot2

我想改变图表的一部分的背景颜色.那可能吗?

例如,使用下面的图表我可能想表明我对重量在2到4吨之间的汽车特别感兴趣,因此希望使用粉红色背景突出显示该区域.

更具体地说,我想覆盖一个透明的粉红色矩形,它在x轴上从2伸展到4,覆盖整个y轴区域.

我该如何编码呢?

p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
Run Code Online (Sandbox Code Playgroud)

Ada*_*ley 17

矩形很容易使用geom_rect (文档).你只需要在gees_rect的aes调用中指定它的尺寸.要在下面的代码中更改透明度更改alpha.

 require(ggplot2)
 p <- ggplot(mtcars, aes(wt, mpg)) 
 p + geom_point() + 
     geom_rect(aes(xmin = 2, xmax = 4, ymin = -Inf, ymax = Inf),
                   fill = "pink", alpha = 0.03))
Run Code Online (Sandbox Code Playgroud)

这会产生类似你所追求的东西吗?

图尝试


abr*_*chi 6

尽管这可行,但我注意到它绘制的矩形与数据点一样多,这可能是个问题,尤其是对于在多个小平面之间点数变化的小平面而言。较低的alpha值反映了这一点,它仅获得大约50%的透明度。我认为这是因为它使用了ggplot()调用的data.frame和美学。

避免这种情况的一种方法是在geom_point()中调用aes()并创建一个专门用于矩形的data.frame。请注意,alpha的大小要大得多,但效果却相似。

require(ggplot2)
ggplot(mtcars) + geom_point(aes(wt, mpg)) + 
geom_rect(data=data.frame(xmin = 2, xmax = 4, ymin = -Inf, ymax = Inf),
    aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), fill="pink", alpha=0.5)
Run Code Online (Sandbox Code Playgroud)

结果 在此处输入图片说明