ggplot2, как добавить разные наборы цветовых палитр в разные geom_ribbon? - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь построить два типа графиков временных рядов.Тот, в котором лента «min-max» более прозрачна, чем лента «10-го-90-го процентиля», но цвет зависит от региона.На другом графике я хочу, чтобы цвет лент был как для региона, так и для типа ленты.Может ли кто-нибудь любезно помочь мне?Ниже я добавляю код неудачной попытки поиграть с прозрачностью (игра с альфа-значениями на самом деле не меняет фигуру так, как я ожидал)

library(ggplot2)
library(RColorBrewer)
cbPalette <- c("red", "blue")

test <- data.frame(time=c("2018-04-30", "2018-05-31", "2018-06-30", "2018-07-31", "2018-08-31", "2018-09-30", "2018-04-30", "2018-05-31", "2018-06-30", "2018-07-31", "2018-08-31", "2018-09-30"), 
                   region=c("regionA","regionA","regionA","regionA","regionA","regionA", "regionB","regionB","regionB","regionB","regionB","regionB"),
                   minvalue=c(50, 70, 73, 97, 80, 65, 50, 70, 73, 97, 80, 65), 
                   maxvalue=c(70, 100, 100, 100, 90, 70, 70, 100, 100, 100, 90, 70), 
                   value90th=c(60, 90, 80, 98, 85, 69, 60, 90, 80, 98, 85, 69),
                   value10th=c(60, 80, 75, 97, 84, 67,60, 80, 75, 97, 84, 67),
                   addvalue=c(60, 80, 75, 50, 84, 67,60, 60, 75, 97, 84, 67))

p <- ggplot(test, aes(x=as.POSIXct(time)))
p <- p + facet_grid(region~.)
p <- p + geom_ribbon(aes(ymin = value10th, ymax = value90th, fill=region, alpha = 0.7))  
p <- p + geom_ribbon(aes(ymin = minvalue, ymax = maxvalue, fill=region, alpha = 0.6))+ scale_fill_manual(values=cbPalette)
p <- p + geom_line(aes(y=addvalue, colour="pink"), size=0.5) 
p

enter image description here

1 Ответ

0 голосов
/ 19 сентября 2019

Я думаю, что решение возможно в scale_color_manual и scale_fill_manual.

В моем графике с несколькими фасетами у меня было:

p <- p + 
  geom_smooth(method = "glm", method.args = list(family = "gaussian"), formula = y ~ 
poly(log(x), 3, raw=TRUE), se=TRUE, alpha = 0.3,aes(fill = Treatment)) +
  scale_linetype_manual(values = c("solid","dashed","dotted")) +
  scale_color_manual(values = c(Col[4],Col[3], Col[2])) +
  scale_fill_manual(values = c(Col[4],Col[3], Col[2]))

Может быть, вы можете добавить альфа к scale_fill_manual в виде спискачтобы дать разные значения альфа для разных лент.

...