Preenchendo a área em um gráfico de linhas em ggplot2: geom_area ()

Para os dados:

    def.percent period  valence
1   6.4827843   1984-1985   neg
2   5.8232425   1985-1986   neg
3   -2.4003260  1986-1987   pos
4   -3.5994399  1987-1988   pos

Se eu adicionar uma linha aos pontos, como posso usar o ggplot2 para colorir a área abaixo da linha [geom_area ()] com cores diferentes para os valores de valência "neg" e "pos"?

Eu tentei isso:

ggplot(data, aes(x=period, y=def.percent, group = 1)) +
geom_area(aes(fill=valence)) +
geom_line() + geom_point() + geom_hline(yintercept=0)

Mas R retorna o erro:

Error: Aesthetics can not vary with a ribbon

Esse mesmo código funciona para um conjunto de dados diferente, não entendo o que está acontecendo aqui, por exemplo:

library(gcookbook) # For the data set
cb <- subset(climate, Source=="Berkeley")
cb$valence[cb$Anomaly10y >= 0] <- "pos"
cb$valence[cb$Anomaly10y < 0] <- "neg"

ggplot(cb, aes(x=Year, y=Anomaly10y)) +
  geom_area(aes(fill=valence)) +
  geom_line() +
  geom_hline(yintercept=0)

questionAnswers(1)

yourAnswerToTheQuestion