#INPUT HANSEN A,B,C projections hansen88=read.table("http://www.realclimate.org/data/scen_ABC_temp.data",header=TRUE,skip=3) #manual digitization by Gavin Schmidt posted Dec 22, 2007 hansen88=ts(hansen88[,2:4],start=hansen88[1,1]) ts.plot(hansen88,col=1:5,type="b") #1958 2019 ###TEMPERATURE SPAGHETTI source(file.path("http://www.climateaudit.org/scripts/utilities.txt")) #returns giss.glb url0="http://www.climateaudit.org/scripts/spaghetti" source(file.path(url0,"tlt3.glb.txt")) #returns tlt3.glb RSS source(file.path(url0,"giss.glb.txt")) #returns giss.glb source(file.path(url0,"giss.stn.txt")) #returns giss.stn source(file.path(url0,"msu.glb.txt")) #returns msu.glb source(file.path(url0,"hadat.glb.txt")) #returns msu.glb spaghetti=ts.union(msu.glb,tlt3.glb,hadat[,"850hPa"],giss.glb,giss.stn) dimnames(spaghetti)[[2]]=c("tlt3","msu","hadat.850","giss","giss.stn") ### re-center satellite to match giss.glb on 1979-1988 year=c(time(spaghetti)) temp=(year>=1979)&(year<1998) m0=apply(spaghetti[temp,],2,mean);m0 # tlt3 giss giss.stn msu hadat.850 #-0.03035088 0.22065789 0.29364035 -0.02679825 0.16491228 spaghetti=scale(spaghetti,center=m0,scale=FALSE) #to common center on 1979-1997 sd0=apply(spaghetti[temp,],2,sd);sd0 # 0.17 0.17 0.17 # tlt3 msu hadat.850 giss giss.stn #0.1635369 0.1740248 0.1995512 0.1601074 0.1816745 #troposphere not rescaled since similar (Christy recommends divide troposphere by 1.2) ##re-center Hansen projections to match GISS.GLB on 1958-1987 temp=(year>=1958)&(year<1988) #back to spaghetti delta=mean(spaghetti[temp,"giss"]);delta # -0.1770468 hansen88=read.table("http://www.realclimate.org/data/scen_ABC_temp.data",header=TRUE,skip=3) #manual digitization by Gavin Schmidt posted Dec 22, 2007 hansen88=ts(hansen88[,2:4],start=hansen88[1,1]) ts.plot(hansen88,col=1:5,type="b") temp1=(time(hansen88)>=1958)&(time(hansen88)<1988) #back to spaghetti m1=apply(hansen88[temp1,],2,mean) #Scenario_A Scenario_B Scenario_C #0.09766667 0.04466667 0.02436667 hansen.recentered=scale(hansen88,scale=FALSE,center=m1) hansen.recentered=hansen.recentered+delta apply(hansen.recentered[temp1,],2,mean) #-0.1770468 -0.1770468 -0.1770468 $matches GISS ##FIGURE 1 top right: PROJECTIONS PLUS GISS GLB - RC FORMAT layout(1) par(mar=c(3,3,2,1)) plot(c(time(hansen88)),hansen88[,"Scenario_B"],col="steelblue2",ylim=c(-.5,1.5),xlim=c(1958,2020),xlab="",ylab="",tcl=.25,lwd=2,axes=FALSE,type="l") points(c(time(hansen88)),hansen88[,"Scenario_B"],col="steelblue2",cex=.7,pch=1) box();axis(side=1,tcl=.25);axis(side=2,las=1,font=2) lines(c(time(hansen88)),hansen88[,"Scenario_A"],col="green3",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_A"],col="green3",pch=1,cex=.7) lines(c(time(hansen88)),hansen88[,"Scenario_C"],col="purple",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_C"],col="purple",pch=1,cex=.7) lines(c(time(giss.glb)),giss.glb,col=1,lwd=1) temp=!is.na(giss.glb); N=max( (1:length(giss.glb))[temp]);N points(c(time(giss.glb))[N],giss.glb[N],col=2,pch=19) abline(v=1987.6,lty=3,col="red") abline(h=seq(0,1.5,.5),col="grey80",lty=3) legend(1958,1.4,fill=c("green3","steelblue2","purple",3),cex=.8,legend=c("Hansen A","Hansen B","Hansen C","GISS")) title(main="Hansen et al 1988 Projections + GISS GLB",cex.main=.8) ##FIGURE 1 bottom left: PROJECTIONS PLUS GISS STN - RC FORMAT layout(1) par(mar=c(3,3,2,1)) plot(c(time(hansen88)),hansen88[,"Scenario_B"],col="steelblue2",ylim=c(-.5,1.5),xlim=c(1958,2020),xlab="",ylab="",tcl=.25,lwd=2,axes=FALSE,type="l") points(c(time(hansen88)),hansen88[,"Scenario_B"],col="steelblue2",cex=.7,pch=1) box();axis(side=1,tcl=.25);axis(side=2,las=1,font=2) lines(c(time(hansen88)),hansen88[,"Scenario_A"],col="green3",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_A"],col="green3",pch=1,cex=.7) lines(c(time(hansen88)),hansen88[,"Scenario_C"],col="purple",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_C"],col="purple",pch=1,cex=.7) lines(c(time(giss.stn)),giss.stn,col="red1",lwd=1) temp=!is.na(giss.stn); N=max( (1:length(giss.stn))[temp]);N points(c(time(giss.stn))[N],giss.stn[N],col=2,pch=19) abline(v=1987.6,lty=3,col="red") abline(h=seq(0,1.5,.5),col="grey80",lty=3) legend(1958,1.4,fill=c("green3","steelblue2","purple","red1"),cex=.8,legend=c("Hansen A","Hansen B","Hansen C","GISS Stn")) title(main="Hansen et al 1988 Projections + GISS Station",cex.main=.8) ##FIGURE 1 bottom left: PROJECTIONS PLUS TLT3 - RC FORMAT #tlt3 re-centered to match GISS GLB in 1979-1997 temp1=(c(time(hansen88))>=1979) &(c(time(hansen88))<1998) delta1=mean(hansen88[temp1,"Scenario_B"]) #0.2739474 temp=(year>=1979)&(year<1998) delta2=mean(spaghetti[temp,"tlt3"]);delta2 #0 layout(1) par(mar=c(3,3,2,1)) plot(c(time(hansen88)),hansen88[,"Scenario_B"],col="steelblue2",ylim=c(-.5,1.5),xlim=c(1958,2020),xlab="",ylab="",tcl=.25,lwd=2,axes=FALSE,type="l") points(c(time(hansen88)),hansen88[,"Scenario_B"],col="steelblue2",cex=.7,pch=1) box();axis(side=1,tcl=.25);axis(side=2,las=1,font=2) lines(c(time(hansen88)),hansen88[,"Scenario_A"],col="green3",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_A"],col="green3",pch=1,cex=.7) lines(c(time(hansen88)),hansen88[,"Scenario_C"],col="purple",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_C"],col="purple",pch=1,cex=.7) lines(year,spaghetti[,"tlt3"]+ (delta1-delta2) ,col=4,lwd=1) temp=!is.na(spaghetti[,"tlt3"]); N=max( (1:nrow(spaghetti))[temp]);N points(c(time(spaghetti))[N],spaghetti[N,"tlt3"]+delta1-delta2,col=2,pch=19) abline(v=1987.6,lty=3,col="red") abline(h=seq(0,1.5,.5),col="grey80",lty=3) legend(1958,1.4,fill=c("green3","steelblue2","purple",4),cex=.8,legend=c("Hansen A","Hansen B","Hansen C","RSS")) title(main="Hansen et al 1988 Projections + RSS",cex.main=.8) ##FIGURE 2 bottom left: PROJECTIONS PLUS TLT3 - CA COLORING #the centering is slightly different than CA Jan format; difference is immaterial #Hansen projections are not re-centered to make consistent 1951-1980 zero (original version slightly off center left in place) layout(1) par(mar=c(3,3,2,1)) plot(c(time(hansen88)),hansen88[,"Scenario_B"],col="green",ylim=c(-.5,1.5),xlim=c(1958,2010),xaxs="i",xlab="",ylab="",tcl=.25,lwd=2,axes=FALSE,type="l") points(c(time(hansen88)),hansen88[,"Scenario_B"],col="green",cex=.7,pch=1) box();axis(side=1,tcl=.25);axis(side=2,las=1,font=2) lines(c(time(hansen88)),hansen88[,"Scenario_A"],col="red",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_A"],col="red",pch=1,cex=.7) lines(c(time(hansen88)),hansen88[,"Scenario_C"],col="blue",lwd=2) points(c(time(hansen88)),hansen88[,"Scenario_C"],col="blue",pch=1,cex=.7) lines(year,spaghetti[,"tlt3"]+ (delta1-delta2) ,col=1,lwd=1) temp=!is.na(spaghetti[,"tlt3"]); N=max( (1:nrow(spaghetti))[temp]);N points(c(time(spaghetti))[N],spaghetti[N,"tlt3"]+delta1-delta2,col=2,pch=19) points(c(time(spaghetti))[N-5],spaghetti[N-5,"tlt3"]+delta1-delta2,col=2,pch=19,cex=.5) abline(v=1987.6,lty=3,col="red") abline(h=seq(0,1.5,.5),col="grey80",lty=3) legend(1958,1.4,fill=c("green","red","blue",1),cex=.8,legend=c("Hansen A","Hansen B","Hansen C","RSS")) title(main="Hansen et al 1988 Projections + RSS",cex.main=.8)