make it transparent and then carefully draw off rectangles to paint over the parts you want to occlude
library(tidyverse)
ggplot() +
#left side
geom_polygon(data=data.frame
(x=c(4.3,5,5,4.3)),
y=c(2,2,4.5,4.5),
aes(x=x,y=y,color=NULL,fill=NULL),
fill="#dddddd")+
#right side
geom_polygon(data=data.frame
(x=c(7,8,8,7)),
y=c(2,2,4.5,4.5),
aes(x=x,y=y,color=NULL,fill=NULL),
fill="#dddddd")+
#bottom side
geom_polygon(data=data.frame
(x=c(4.3,8,8,4.3)),
y=c(2,2,2.5,2.5),
aes(x=x,y=y,color=NULL,fill=NULL),
fill="#dddddd")+
#top side
geom_polygon(data=data.frame
(x=c(4.3,8,8,4.3)),
y=c(4,4,4.5,4.5),
aes(x=x,y=y,color=NULL,fill=NULL),
fill="#dddddd")+
geom_point(data =
iris,aes(x=Sepal.Length,
y=Sepal.Width,
color=Species)) +
theme(panel.background = element_rect(fill="transparent"))