Results from Rweb

You are using Rweb1.04 on the server at www.nku.edu

Rweb:>   
Rweb:> ############## RClimate Script: Compare JAXA_2007_2010.R ################################### 
Rweb:> ##                                                                                        ##  
Rweb:> ## Download and process    JAXA daily SIE                                                 ## 
Rweb:> ## Developed by D Kelly O'Day to demonstrate use of source() function for climate data    ## 
Rweb:> ##                   http:chartsgraphs.wordpress.com    6/26/10                           ## 
Rweb:> ############################################################################################ 
Rweb:> library(plotrix) 
Rweb:> options(digits=4) 
Rweb:> par(mfrow=c(1,1)) 
Rweb:> par(ps=10); par(oma=c(0,0,0,0));par(mar=c(2,4,2,1)) 
Rweb:>  
Rweb:> layout(matrix(c(1,2)), heights=c(2,1)) 
Rweb:>  
Rweb:> ##ael  link <- "http://www.ijis.iarc.uaf.edu/seaice/extent/plot.csv" 
Rweb:> link <-"/var/www/html/data/Rweb/RClimate/files/plot.csv" 
Rweb:> ##lea 
Rweb:>  
Rweb:> j_data <- read.csv(link, header = F, 
+ 		   colClasses = rep("numeric",3), 
+ 		   comment.char = "#", na.strings = c(-9999), 
+ 		   col.names = c("mo", "day", "yr", "JASIE") ) 
Rweb:>  
Rweb:> ## Basic Date calcs 
Rweb:> j_date <- paste(j_data$mo,j_data$day, j_data$yr, sep="/") 
Rweb:> ## day of year 
Rweb:> day_val <- strptime(j_date, "%m/%d/%Y")   
Rweb:> doy <- day_val$yday  +1  
Rweb:> j_date <- as.Date(j_date, format="%m/%d/%Y") 
Rweb:> j_mo <- j_data$mo 
Rweb:> j_yr <- j_data$yr 
Rweb:>  
Rweb:> yr_frac <- as.numeric(j_data$yr + (j_mo-1)/12 + (j_data$day/30)/12) 
Rweb:> j_dy <- as.numeric(format(j_date,"%d")) 
Rweb:>  
Rweb:> ## data.frame of orig data & dates 
Rweb:> jd <- data.frame(j_date, yr_frac, j_yr,j_mo,j_dy,doy, j_data$JASIE/10^6) 
Rweb:> names(jd) <- c("dt", "yr_frac", "yr", "mo", "day","DOY", "sie") 
Rweb:>  
Rweb:> ## JAXA's source file inludes all days of year with NA's for upcomming days. Remove all NAs 
Rweb:> jds <- subset(jd, jd$sie != "NA") 
Rweb:>  
Rweb:> ## Get last day of jds data.frame 
Rweb:> no_row <- nrow(jds) 
Rweb:> cur_dt <- jds[no_row,1]  
Rweb:> cur_day <- as.numeric(format(cur_dt, "%d")) 
Rweb:> cur_mo <-  as.numeric(format(cur_dt, "%m")) 
Rweb:> cur_yr <- as.numeric(format(cur_dt, "%y")) 
Rweb:>  
Rweb:> ## subset jds to make data.frames for all data for 2007 & 2010 
Rweb:> jd_2010 <- subset(jds, jds$yr == 2010) 
Rweb:> n_10 <-  nrow(jd_2010) 
Rweb:> peak_2010 <- max(jd_2010$sie, na.rm=T) 
Rweb:>  
Rweb:> peak_dt_2010 <-   format(jd_2010$dt[which(jd_2010$sie== peak_2010)], "%m/%d") 
Rweb:> peak_doy_2010 <-  jd_2010$DOY[which(jd_2010$sie== peak_2010)] 
Rweb:>  
Rweb:> last_dt <- format(jd_2010$dt[n_10], "%m/%d") 
Rweb:> last_doy <- jd_2010[n_10,6] 
Rweb:> last_2010 <- jd_2010[n_10,7] 
Rweb:> decr_2010 <- peak_2010 - last_2010 
Rweb:>  
Rweb:> jd_2007 <- subset(jds, jds$yr== 2007 & jds$DOY <= last_doy) 
Rweb:> n_07 <- nrow(jd_2007) 
Rweb:> peak_2007 <- max(jd_2007$sie, na.rm=T) 
Rweb:> peak_dt_2007 <-   format(jd_2007$dt[which(jd_2007$sie== peak_2007)], "%m/%d") 
Rweb:> peak_doy_2007 <-  jd_2007$DOY[which(jd_2007$sie== peak_2007)] 
Rweb:>  
Rweb:> last_2007 <- jd_2007[n_07,7] 
Rweb:> decr_2007 <- peak_2007 - last_2007 
Rweb:>  
Rweb:> ###  Day of year axis setup 
Rweb:> ## Set up basic day of year vectors (mon_names, 1st day of mon) 
Rweb:> mon_names <- c("Jan", "Feb", "Mar", "April", "May", "June", "July", "Aug", "Sept", "Oct","Nov","Dec") 
Rweb:> mon_doy <- c(1,32,60,91,121,151,182,213,244,274,305,335,365) 
Rweb:> mon_pos <- c(16, 46, 75, 106,135, 165, 200, 228, 255, 289, 320, 355) 
Rweb:> y_min <- (min(jd_2010$sie) )*0.9 
Rweb:> y_max <- (max(jd_2010$sie))* 1.1 
Rweb:>  
Rweb:> ## plot titles  
Rweb:> main_title <- paste("Will JAXA 2010 Minimum Arctic Sea Ice Extent \nDrop Below Record 2007 Level?\n ",last_dt," Status", sep="") 
Rweb:> y_title <- "JAXA Arctic Sea Ice Extent - millions km^2" 
Rweb:>  
Rweb:> ## Plot   
Rweb:> plot(jd_2010$DOY, jd_2010$sie, type="l", col = "red", 
+      main=main_title, cex.main=0.85,ylab = y_title, las=1,  
+      xlim = c(1, last_doy+2),  
+      ylim = c(y_min, y_max), axes=F, xaxs="i", yaxs="i", las=1, cex.main = 0.8) 
Rweb:>  
Rweb:> ## custom x & y axes 
Rweb:> axis(side=1, at=mon_doy, labels=F, xaxs="i") 
Rweb:> axis(side=1, at=mon_pos, labels=mon_names, tick=F, line=F, xaxs="i") 
Rweb:> axis(side=2, at=NULL, labels=T, yaxs="i", las=1) 
Rweb:> ## need full length y axis line 
Rweb:> abline(v=1)     
Rweb:>  
Rweb:> ## Add 2007 trend & 2007-2010 peak sie 
Rweb:> points(jd_2007$DOY, jd_2007$sie, type="l", col = "blue") 
Rweb:> points(peak_doy_2010, peak_2010, type = "p", col = "red", pch=16, cex=1.25) 
Rweb:> points(peak_doy_2007, peak_2007, type = "p", col = "blue", pch=16, cex=1.25) 
Rweb:> points(last_doy, last_2007, col = "blue", type="p", pch=18,cex=1.25) 
Rweb:> points(last_doy, last_2010, col = "red", type="p", pch=18, cex=1.25) 
Rweb:>  
Rweb:> ## create peak notes for legend   
Rweb:> peak_note_2007 <- paste("2007 Peak @ ", signif(peak_2007, 4)," on ", peak_dt_2007, sep="") 
Rweb:> peak_note_2010 <- paste("2010 Peak @ ", signif(peak_2010, 4)," on ", peak_dt_2010,  sep="") 
Rweb:>  
Rweb:> ## create last date sie notes for legend 
Rweb:> last_note_2007 <- paste(last_dt, "/2007 @ ", signif(last_2007,3), sep="") 
Rweb:> last_note_2010 <- paste(last_dt, "/2010 @ ", signif(last_2010,3), sep="") 
Rweb:>  
Rweb:> ## legend 
Rweb:> legend(5, 12, c("2007 Trend", "2010 Trend",peak_note_2007, peak_note_2010, last_note_2007, last_note_2010), col = c("blue", "red","blue", "red", "blue", "red"), 
+        text.col = "black", lty = c(1,1,0,0,0,0),pch=c(0,0,16,16,18,18),pt.cex=c(0,0,1,1,1,1), 
+        merge = F, bg = "white", bty="o", box.col = "white", cex = .8) 
Rweb:>  
Rweb:>  
Rweb:> delta <- last_2010-last_2007 
Rweb:> delta_note <- paste(last_dt, " Delta: \n2010 - 2007 =\n ", signif(delta,3), " million km^2", sep="") 
Rweb:> text(25, 14.7, delta_note, cex=0.75, adj=0.5) 
Rweb:>  
Rweb:> ## function to calc slope last x days 
Rweb:>  
Rweb:> tr_func <- function(n) { 
+   last_n_2007 <- subset(jd_2007, jd_2007$DOY > last_doy-n) 
+   last_n_2010 <- subset(jd_2010, jd_2010$DOY > last_doy-n) 
+    
+   lm_2007 <-  lm( sie ~ DOY, data = last_n_2007) 
+   tr_2007 <- coef(lm_2007)[2] 
+    
+   lm_2010 <-  lm( sie ~ DOY, data = last_n_2010) 
+   tr_2010 <- coef(lm_2010)[2] 
+   my_df <- data.frame(as.integer(n), signif(tr_2007, 3), signif(tr_2010,3), row.names=NULL) 
+   return(my_df) 
+ } 
Rweb:>  
Rweb:> x <- c(2,3,5,7,10,20,30,60,90) 
Rweb:> tr_df <- data.frame() 
Rweb:> how_many <- length(x) 
Rweb:> for (i in 1:how_many) { 
+   y <- x[i] 
+   results <- tr_func(y) 
+   tr_df[i,1] <-  y                #results[1] 
+   tr_df[i,2] <-  signif(results[2], 3) 
+   tr_df[i,3] <-  signif(results[3] ,3) 
+   tr_df[i,4] <-  signif(results[3]/results[2],3) 
+ } 
Rweb:>  
Rweb:> names(tr_df) <- c("Prev days", "2007", "2010", "2010/2007") 
Rweb:>  
Rweb:>  
Rweb:> par(mar=c(0,0,0.5,0)) 
Rweb:> plot(x=c(1,2,3), y= c(1,2,3), type="n", axes=F,ann=F, xlim=c(0,3), ylim=c(0,3)) 
Rweb:>  
Rweb:>  
Rweb:> table_title <- paste(last_dt, ": Arctic SIE Decline Rates for Number of Previous Days", sep="") 
Rweb:> addtable2plot(0.825,2.95,tr_df,bty="o",display.rownames=F,hlines=T,cex=0.95, 
+ 	      title=table_title, xjust=0, yjust=0) 
Rweb:>  
Rweb:>  
Rweb:>  


Gif Images