Вы ищете элемент темы plot.background
, а не panel.background
.График представляет собой всю область, включая внешние оси, в то время как панель представляет собой область внутри или между осями.
Уродливые графики, иллюстрирующие разницу:
ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
panel.background= element_rect(color = "red", fill = "yellow", size = 6))

ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
plot.background = element_rect(color = "red", fill = "yellow", size = 6))

theme_bw
по умолчанию - фон графика с белой рамкой.
theme_bw()$plot.background
List of 5
$ fill : NULL
$ colour : chr "white"
$ size : NULL
$ linetype : NULL
$ inherit.blank: logi TRUE
- attr(*, "class")= chr [1:2] "element_rect" "element"
Поэтому вместо plot.background
можно установить element_blank
или element_rect
с цветом NA
или прозрачным, или любым другим способом сделать его невидимым.Поскольку вам не нужны никакие атрибуты фона графика, самый простой - это просто plot.background = element_blank()
.
ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
plot.background = element_blank())