Выделение областей интереса в ggplot2

В построении ванили можно использовать вызов polygon в аргументе panel.first для plot, чтобы выделить область фона. Можно ли сделать то же самое в ggplot2? Можно ли это сделать, сохраняя сетки?

например:

# plot hp and wt for mtcars data, highlighting region where hp/wt ratio < 35
with(mtcars,plot(hp,wt,
     panel.first=polygon(c(0,0,max(wt)*35),c(0,max(wt),max(wt)),
     col="#d8161688",border=NA)))

Ответ 1

Да, это возможно с ggplot2. Чтобы сохранить видимость линий сетки, вы можете использовать альфа-прозрачность. Обратите внимание, что в общем случае порядок, в котором применяются геометрия и статистика, имеет значение.

tmp <- with(mtcars, data.frame(x=c(0, 0, max(wt)*35), y=c(0, max(wt), max(wt))))
ggplot(mtcars, aes(hp, wt)) + 
  geom_polygon(data=tmp, aes(x, y), fill="#d8161688") + 
  geom_point()

ggplot2 output