When coord_fixed() is used with ggplot2, it does not appear to be possible to set the background color of the entire plot. Consider this simple example:
If you want to achieve this effect without relying on non-exported ggplot2 functions, you can also use ggdraw() from cowplot:
test_data <- data.frame(x=1:10)
test_data$y <- sqrt(test_data$x)
p1 <- ggplot(test_data) + geom_point(aes(x, y))
p2 <- p1 + theme(plot.background=element_rect(fill="green", color = NA)) + coord_fixed()
# note, don't load cowplot, since it may change your theme
cowplot::ggdraw(p2) +
theme(plot.background = element_rect(fill="green", color = NA))
The function ggdraw() wraps your plot into a new ggplot object that you can then draw onto or style as you wish.
This will do what you want:
p2 <- p1 + theme(
plot.background=element_rect(fill="green", color="green")
) + coord_fixed()
grid:::grid.rect(gp=gpar(fill="green", col="green"))
ggplot2:::print.ggplot(p2, newpage=FALSE)
First, we set the border and fill to green, then we plot a grid rectangle in the same color to fill the viewport, and finally we plot with ggplot2:::print setting the newpage parameter to false so that it overplots on top of our grid rectangle:

Note that the problem isn't with ggplot, but it's just that you are plotting into a viewport that is the wrong size. If you pre-shape your viewport to the correct aspect ratio, you won't need to worry about setting the viewport contents to green first.
There's a way to do this in ggplot by using a secret (undocumented, passed to device in ...) argument bg to ggsave().
library(ggplot2)
test_data <- data.frame(x = 1:10)
test_data$y <- sqrt(test_data$x)
p1 <- ggplot(test_data) +
geom_point(aes(x, y)) +
theme(plot.background = element_rect(fill = "green", color = "green")) +
coord_fixed()
ggsave("test.png", bg = "green", h = 5)
I came here originally because I was using geom_sf to plot maps which are by definition fixed to a ratio, and wanted to add a dark background. The bg argument also applies to gganimate::animate(), if you need to add a background color to a fixed ratio animation.