我喜欢使用ggplot生成与NOAA在R中的SST和度加热周(DHW)生成的图类似的图(但是如果您有其他方法,我也可以这样做)
SST和DHW时间序列的NOAA图:
因此,每个被调查站点都有一个数据框,其中包含海表温度(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))
我得到这个数字:
我的问题是,我仅成功给整个图形提供了一个颜色渐变,但是我想为我的SST数据(上线)提供一个从20度到31度的颜色渐变,并为第二个从0到15度的颜色渐变DHW线,都从蓝色开始到其低值,再到深红色为最高值。 当我尝试添加第二个scale_colour_gradient时,我的第一个渐变被最新的渐变代替,因此我仍然无法在不同的行上应用不同的颜色渐变。
稍后,我还将在时间序列较长的区域中为其他站点添加SST,这就是为什么我保留DHW整个时间序列的原因。
我们将竭诚欢迎您的帮助。 真诚的 月桂树