我想仅更改图表的一部分背景颜色,这有可能吗?例如,对于下面的图表,我可能希望指出我特别关注重量在2至4吨之间的汽车,因此希望使用粉色突出显示此区域。更具体地说,我想叠加一个透明的粉色矩形,该矩形从x轴的2延伸到4,并覆盖整个y轴区域。请问如何编写代码?
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
我想仅更改图表的一部分背景颜色,这有可能吗?例如,对于下面的图表,我可能希望指出我特别关注重量在2至4吨之间的汽车,因此希望使用粉色突出显示此区域。更具体地说,我想叠加一个透明的粉色矩形,该矩形从x轴的2延伸到4,并覆盖整个y轴区域。请问如何编写代码?
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
使用geom_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))
这是否产生了类似于您所期望的东西?
虽然这种方法可以使用,但我注意到它会绘制与数据点数量相同的矩形,这可能是一个问题,特别是在多个面板中,每个面板的数据点数量不同。这反映在非常低的alpha上,仅获得大约50%的透明度。我认为这是因为它使用了从ggplot()调用的数据框架和美学。
避免这种情况的一种方法是在geom_point()内调用aes(),并为矩形创建一个特定的数据框架。请注意,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)
注:此处为一段HTML代码,无法直接翻译成中文。