根据连续变量改变geom_ribbon的颜色?

时间:2017-11-23 09:23:49

标签: r ggplot2

我有月度(长期平均值)气候数据(降水和温度),并希望使用ggplot2制作组合条(降水和降雨天数)和线图(温度),左右比例。到目前为止,它正在发挥作用。

 lgj<-structure(list(Tmax = c(29.5, 30.5, 30.6, 30.6, 29.6, 29.1, 29.5, 
    31.5, 32.1, 31.9, 30.3, 29.8), Tmin = c(18.2, 17.7, 17.9, 16.1, 
    13, 10.2, 9.7, 11.4, 15, 17.2, 18.1, 18.4), Tav = c(23.2, 23.2, 
    23.2, 22.7, 20.7, 18.8, 18.9, 21.2, 23.2, 23.9, 23.4, 23.2), 
    Prec = c(244.5, 202.2, 196.2, 108.6, 38, 10.4, 5.1, 16.1, 
    57.3, 163.1, 185.2, 254.4), P_day = c(20L, 18L, 15L, 9L, 
    4L, 1L, 1L, 1L, 6L, 11L, 18L, 22L), date = structure(c(11323, 
    11354, 11382, 11413, 11443, 11474, 11504, 11535, 11566, 11596, 
    11627, 11657), class = "Date")), .Names = c("Tmax", "Tmin", 
    "Tav", "Prec", "P_day", "date"), row.names = c("01.01.2001", 
    "01.02.2001", "01.03.2001", "01.04.2001", "01.05.2001", "01.06.2001", 
    "01.07.2001", "01.08.2001", "01.09.2001", "01.10.2001", "01.11.2001", 
    "01.12.2001"), class = "data.frame")

此外,我想添加一个显示最小和最大温度的geom_ribbon,当使用geom_ribbon(aes(...,group = 1)而没有任何颜色和填充规格时,它也会起作用。

然而,根据相应月份的平均温度,给每个月的色带一个颜色会很好。 我找到了类似问题的答案: Modifying geom_ribbon borders 并尝试在此实施:

ggplot(lgj,aes(x=date,y=Prec,fill=P_day,group=date))+
  geom_bar(stat="identity") +
  geom_ribbon(aes(ymax=lgj$Tmax, ymin=lgj$Tmin,fill=factor(lgj$Tav), colour=factor(lgj$Tav)), alpha=0.6) +
  geom_line(aes(x=lgj$date,y=lgj$Tav))

但它在我的情况下没有工作,我收到了错误:

  

&#34;错误:提供给连续刻度的离散值&#34;

如果我尝试删除该因子并将一个组参数添加到geom_ribbon。

ggplot(lgj,aes(x=date,y=Prec,fill=P_day,group=date)) +
  geom_bar(stat="identity") +
  geom_ribbon(aes(ymax=lgj$Tmax, ymin=lgj$Tmin, fill=lgj$Tav, colour=lgj$Tav,group=1), alpha=0.6) +
  geom_line(aes(x=lgj$date,y=lgj$Tav))
  

&#34; f(...)中的错误:美学不能随着色带而变化&#34;

任何想法如何进行此项运行或可能的解决方法?

0 个答案:

没有答案