R 使用ggplot2绘制堆叠区域的颜色问题

R 使用ggplot2绘制堆叠区域的颜色问题,r,ggplot2,R,Ggplot2,我正在尝试使用ggplot2创建堆叠面积图。 到目前为止,它的工作,但现在我有问题,改变该地区的颜色。 我的情节是这样的: 但我希望它从绿色到红色(中间应该是黄色)。我怎样才能改变它 ggplot(df.f, aes(x=Year,y=Population,fill=AgeClass)) + geom_area() 编辑: 它应该是这样的: 以下是dput(df)的输出: 您可以使用scale\u fill\u gradient2缩放颜色 ggplot(df.f,aes(x=Year,

我正在尝试使用ggplot2创建堆叠面积图。 到目前为止,它的工作,但现在我有问题,改变该地区的颜色。 我的情节是这样的:

但我希望它从绿色到红色(中间应该是黄色)。我怎样才能改变它

ggplot(df.f, aes(x=Year,y=Population,fill=AgeClass)) +
  geom_area()
编辑: 它应该是这样的:

以下是dput(df)的输出:


您可以使用
scale\u fill\u gradient2
缩放颜色

ggplot(df.f,aes(x=Year,y=Population,fill=AgeClass))+
  geom_area() +
  scale_fill_gradient2(low='green', mid='yellow', high='red')

看起来你要做的是用连续的颜色编码填充一个离散的刻度。这应该可以做到(如果您提供数据,会更容易):


colorscale谢谢,但我得到一个错误:“error:Discrete value提供给continuous scale”。颜色应该是从红色到绿色,有不同的色调。请提供一些样本数据!使用
dput(df.f)
获取一些示例数据。欢迎使用SO!你能分享你正在使用的数据吗?您可以复制
dput(df.f)
dput(head(df.f))
的输出。我已经分享了它。这是正确的方向,但例如,绿色色调是相同的,因此很难区分它们
ggplot(df.f,aes(x=Year,y=Population,fill=AgeClass))+
  geom_area() +
  scale_fill_gradient2(low='green', mid='yellow', high='red')
colorscale <- colorRampPalette(c("green", "yellow", "red"))(length(levels(df.f$AgeClass)))

ggplot(df.f,aes(x=Year,y=Population,fill=AgeClass))+
  geom_area() +
  scale_fill_manual(values=setNames(colorscale, levels(df.f$AgeClass)))