К сожалению, нет собственного способа сделать градиентную заливку в ggplot
. Каждый элемент может иметь только однородную заливку. Однако вполне возможно сделать так, будто у вас есть градиентная заливка, создав кучу постепенно меняющихся полос:
library(ggplot2)
set.seed(813)
min_date = as.Date("2020-05-01")
max_date = as.Date("2020-07-14")
dates = seq(min_date, max_date, by = "day")
shaded_start = max_date - 21
lefts <- seq(shaded_start, max_date, 0.5)
rights <- c(lefts[-1], max_date + 0.5)
maxs <- rep(Inf, length(lefts))
mins <- rep(-Inf, length(lefts))
fill <- seq(0, 1, length.out = length(lefts))
shade_df <- data.frame(lefts, rights, maxs, mins, fill)
df <- data.frame(dates = dates,
volumes = runif(length(dates)))
chart <- ggplot(df, aes(x = dates, y = volumes)) +
geom_rect(data = shade_df, inherit.aes = FALSE,
aes(xmin = lefts, xmax = rights, ymin = mins, ymax = maxs, fill = fill),
colour = NA, size = 0) +
geom_line() +
scale_fill_gradient(low = "gray90", high = "gray55") +
theme(legend.position = "none")
chart
введите описание изображения здесь