У вас просто есть дополнительный шаг настройки фрейма данных в geom_rect
, который совпадает с данными в ggplot
. Просто укажите ваши максимальные и минимальные значения для geom_rect
, и это сработает:
ggplot(df, aes(Month, Value, group = 1)) +
geom_line() +
theme_minimal() +
geom_rect(aes(xmin = min(as.integer(Month)) - 0.5,
xmax = max(as.integer(Month)) + 0.5,
ymin = min(Value),
ymax = max(Value)),
alpha = 0.2/nrow(df), fill = "green")
Это работает:
ggplot(df, aes(Month, Value, group = 1)) +
geom_line() +
theme_minimal() +
geom_rect(data =
data.frame(xmin = min(as.integer(df$Month)) - 0.5,
xmax = max(as.integer(df$Month)) + 0.5,
ymin = min(df$Value),
ymax = max(df$Value)),
aes(x = NULL,y = NULL,xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
alpha = 0.2, fill = "green")
путем отмены отображения унаследованной x / y эстетики из верхнего вызова ggplot. Вполне понятно, что это может сбивать с толку, поскольку описание в ?geom_rect
своего рода подразумевает, что geom_rect
вообще не ищет этой эстетики.