R: ggplot градиентная окраска фона

Я хотел бы создать ggplot с градиентной окраской, заполняя как панель графика, так и ее фон, как показано здесь.

Как вы можете видеть, градиентная окраска фона охватывает как панель графика, так и ее фон. На данный момент мне известно только "приближение" искомого решения:

library(ggplot2)
library(grid)
library(gridExtra)
reds <- c("#7B0664", "#E32219")
g <- rasterGrob(reds, width = unit(1, "npc"), height = unit(1, "npc"),   
                interpolate = TRUE) 
ggplot(data = economics, aes(x = date, y = unemploy)) + 
     annotation_custom(g, xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf) + 
     geom_line( alpha=1, color = "white", size = 0.5 ) +
     xlab("Years") + ylab("Unemployed [thousands]") +
     theme(plot.background = element_rect(fill=reds[2]))

Используя приведенный выше код, панель графика получается в виде градиента, окрашенного в пределах границ оси, однако она не охватывает весь фон при такой окраске градиента. Тема (plot.background =...) способна заполнить оставшийся фон, но, похоже, не в состоянии использовать градиентную окраску. Чтобы отметить далее, ту же самую градиентную окраску следует применять ко всему фону графика.

Любые предложения будут оценены. Благодарю.

1 ответ

Вы можете распечатать / нарисовать график поверх растрового робота,

введите описание изображения здесь

library(ggplot2)
library(grid)
library(ggthemes)

reds <- c("#7B0664", "#E32219")
g <- rasterGrob(reds, width = unit(1, "npc"), height = unit(1, "npc"), interpolate = TRUE)
p <- ggplot(data = economics, aes(x = date, y = unemploy)) +
  geom_line( alpha=1, color = "white", size = 0.5 ) +
  xlab("Years") + ylab("Unemployed [thousands]") +
  theme_base() + 
  theme(panel.background=element_blank(),
        panel.border = element_blank(),
        plot.background=element_blank(),
        text = element_text(colour="white"),
        line = element_line(colour="white")) +
  theme()

grid.newpage()
grid.draw(g)
print(p, newpage = FALSE)
Другие вопросы по тегам