我想更改图表的一部分背景颜色。这可能吗?
例如,使用下面的图表我可能想表明我对重量在2到4吨之间的汽车特别感兴趣,因此希望使用粉红色背景突出显示该区域。
更具体地说,我想覆盖一个透明的粉红色矩形,它在x轴上从2延伸到4,覆盖整个y轴区域。
我该怎么编码?
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
答案 0 :(得分:13)
使用geom_rect (documentation)可以轻松实现矩形。你只需要在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))
这会产生类似于你所追求的东西吗?
答案 1 :(得分:4)
虽然这样可行,但我注意到它绘制了与数据点一样多的矩形,这可能是一个问题,特别是对于切面之间点数变化的切面。这通过非常低的α来反映,以获得仅约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)