ggplot2为来自不同数据框的特定几何线/色带创建特定的颜色渐变

时间:2018-08-31 08:47:37

标签: r ggplot2 time-series

我喜欢使用ggplot生成与NOAA在R中的SST和度加热周(DHW)生成的图类似的图(但是如果您有其他方法,我也可以这样做)

SST和DHW时间序列的NOAA图:

enter image description here

因此,每个被调查站点都有一个数据框,其中包含海表温度(SST)的时间序列,而对于我的研究区域,该数据框具有DHW值。

这些数据帧的长度并不总是匹配,因为时间序列不相同,但它们重叠。

SST dataframe look like this:
DateTime            meanSST DateShort
07/29/15 07:00:00 PM 26.781 07/29/15 
07/29/15 08:00:00 PM 27.272 07/29/15 
07/29/15 09:00:00 PM 25.708 07/29/15 
07/29/15 10:00:00 PM 25.902 07/29/15 
07/29/15 11:00:00 PM 25.805 07/29/15 
07/30/15 12:00:00 AM 25.610 07/30/15 

当DHW数据帧如下所示时:

Date2       SST_MIN SST_MAX DHWvalue
6/3/2013    26.683  29.8978 0
6/4/2013    26.9522 30.6074 0.168
6/5/2013    27.066  30.5716 0.342
6/6/2013    25.7735 30.6236 0.5282
6/7/2013    25.2618 30.4678 0.6848

我在R中尝试了以下代码:

#dataset
dd<-read.csv("HBH-LTER20150728-201610b.csv")
DHW<- read.csv("NOAA data South TW/DHW SouthernTW NOAA.csv")
#date format (lubridate required)
Sys.setlocale("LC_TIME", "usa") #windows
dd$Date = mdy(dd$Date)
DHW$Date2=mdy(DHW$Date2)

library(ggplot2)

#plot 
ggplot() + 
  geom_line(data = DHW, aes(x = Date2, y = DHWvalue, color = DHWvalue)) +
  scale_y_continuous(limits = c(0,31), breaks = seq(0,31,5)) +
  geom_line(data = dd, aes(x = Date, y = meanSST, color = meanSST) )+
  scale_colour_gradient2(low = "blue", mid = "light green" , high = "red", midpoint = 26)+
  scale_x_date(date_breaks = "2 month", date_labels = waiver())+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

我得到这个数字:

enter image description here

我的问题是,我仅成功给整个图形提供了一个颜色渐变,但是我想为我的SST数据(上线)提供一个从20度到31度的颜色渐变,并为第二个从0到15度的颜色渐变DHW线,都从蓝色开始到其低值,再到深红色为最高值。 当我尝试添加第二个scale_colour_gradient时,我的第一个渐变被最新的渐变代替,因此我仍然无法在不同的行上应用不同的颜色渐变。

稍后,我还将在时间序列较长的区域中为其他站点添加SST,这就是为什么我保留DHW整个时间序列的原因。

我们将竭诚欢迎您的帮助。 真诚的 月桂树

0 个答案:

没有答案