根据分类变量更改曲线下区域的颜色 (geom_area)

Changing the color of the area under the curve according to a categorical variable (geom_area)

我正在尝试绘制一条曲线(geom_area),曲线下的面积根据第三个变量而变化。

这是一个可重现的例子:

data <- data.frame(
  time = seq(1,10),
  activity = c(43.59675 ,18.15803 ,26.59981 ,72.64358 ,20.68794, 86.13841, 47.64718, 83.94334 ,32.33138, 81.70798),
  space = c(1 ,3 ,3 ,1 ,2 ,3 ,2 ,2 ,3 ,1)
)

data$space <- as.character(data$space)
ggplot(data,
       aes (x = time, y = activity)) + geom_area()

结果在这里:

我想要的是根据space变量给曲线下的这个黑色区域上色。 尝试类似下面的代码会给出一条非常奇怪的曲线(在这里查看:

ggplot(data,aes (x = time, y = activity, fill = space)) + geom_area()

有什么帮助吗?

首先你需要一些数据操作! 然后你可以使用 geom_ribbon().

data$space <- as.factor(data$space)
data$time <- as.factor(data$time)
data$df <- as.factor(data$time)

data2 <- data.frame(time=data$time[-1], activity=data$activity[-1], space=data$space[-10], df=data$df[-10])
data3 <- rbind(data,data2)

ggplot(data3, aes (x = time, ymax = activity, ymin=0, group=df, fill=space)) + 
  geom_ribbon()