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)