geom_area用不同的颜色填充

Gar*_*yDe 4 r fill ggplot2

在使用geom_area进行绘图时,我遇到了一些问题。我有一个包含日期和计数的数据框,如下所示:

dates <- c("02/01/00", "02/04/00", "02/07/00", "02/10/00", "02/01/01", "02/04/01", "02/07/01", "02/10/01")
dat <- data.frame(date=as.Date(dates, "%d/%m/%y"), count=(sample(1:8)))
Run Code Online (Sandbox Code Playgroud)

然后,我添加了一个“ month”变量:

dat["month"] <- month(dat$date)
Run Code Online (Sandbox Code Playgroud)

然后是我的剧情:

plot <- ggplot(data=dat, aes(x=date, y=count, group=month, fill=month)) + geom_area()
Run Code Online (Sandbox Code Playgroud)

如果可以理解,结果并不会那么糟糕,它不应该填充从本月的第一次发生到次年的第二次发生的区域,而是要填充从这一发生到下个月的第二次发生的区域。同年。(为了更好地理解:这些线应与图表plot2相同(请参见下文),但每个新月都用不同的颜色填充)。

plot2 <- ggplot(data=dat, aes(x=date, y=count)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

Mar*_*elo 5

与@ user20659的注释相同,但要处理数据:

dat["month"] <- as.factor(month(dat$date))
dat["df"] <- as.factor(dat$date)

dat2 <-data.frame(date=dat$date[-1],count=dat$count[-1], month=dat$month[-8],df=dat$df[-8])

dat3 <- rbind(dat,dat2)

ggplot(data=dat3, aes(x=date, ymax=count, ymin=0, group=df, fill=month)) + geom_ribbon()
Run Code Online (Sandbox Code Playgroud)

情节