{"id":168,"date":"2011-02-11T10:30:03","date_gmt":"2011-02-11T14:30:03","guid":{"rendered":"http:\/\/web.colby.edu\/mgimond\/?p=168"},"modified":"2012-06-26T15:06:08","modified_gmt":"2012-06-26T19:06:08","slug":"r-graphingcomputing-heating-degree-days","status":"publish","type":"post","link":"https:\/\/web.colby.edu\/mgimond\/2011\/02\/11\/r-graphingcomputing-heating-degree-days\/","title":{"rendered":"R: Graphing\/Computing Heating Degree Days"},"content":{"rendered":"<hr \/>\n<p>You can download data for this example <a href=\"http:\/\/web.colby.edu\/mgimond\/files\/2011\/02\/Waterville_20101.zip\">here<\/a>.<\/p>\n<hr \/>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\nyear = 2010\r\ncity = &quot;Waterville&quot;\r\nseas.tmp  = c(&quot;4-01&quot;, &quot;7-01&quot;, &quot;10-01&quot;, &quot;12-31&quot;)\r\nseas = as.Date(paste(seas.tmp, toString(year), sep = &quot;-&quot;),\r\nformat = &quot;%m-%d-%Y&quot;, tz = &quot;EST&quot;)\r\n\r\n# Load data and convert date field to a date (POSIX) object.\r\n# The date\/time is in standard time.\r\nmet.raw  = read.csv ( paste(city, &quot;_&quot;, toString(year), \r\n           &quot;.csv&quot;, sep = &quot;&quot;),\r\n            na.strings = c(&quot;NaN&quot;, &quot;M&quot;),header = T ) \r\nmet.day = as.Date(met.raw$Date,\r\n          format=&quot;%m\/%d\/%Y&quot;, tz=&quot;EST&quot;) # extract date\/time column. No DST.\r\nmet.1 = met.raw[, -2]\r\nmet   = data.frame(Date = met.day,met.1)\r\n# column to met.1 (overwrite met object)\r\ndays.un = unique(met$Date)\r\nday.mean = tapply(met$Temp, met$Date, median, na.rm = T)\r\nday.hdd  = data.frame(Date = days.un, HDD = (65-day.mean), \r\n            IO=((65 - day.mean) &gt; 0))\r\n\r\nday.hdd.sub1 = subset(day.hdd, HDD &gt; 0) # Only positive HDD values are used\r\ncsum.tmp  =  cumsum(day.hdd.sub1$HDD)\r\nday.hdd.csum = data.frame(Date = day.hdd.sub1$Date,\r\n               HDD.CD = csum.tmp, IO = day.hdd.sub1$IO)\r\n\r\n# Find the cumulative HDD for the end of each season\r\nseas.df    = data.frame(eDate = seas)\r\nseas.index = findInterval(seas, day.hdd.csum$Date) # Find the closest date\r\nhdd.seas   = day.hdd.csum[seas.index,]             # Cumulative HDD by season\r\n\r\np  &lt;- ggplot(day.hdd.csum, aes(Date, HDD.CD) )\r\np2 &lt;- p + geom_point(aes(colour = IO))                     +\r\n      scale_colour_manual(values = c(&quot;#ff9999&quot;))           +\r\n      scale_x_date(&quot;Month&quot;, format = &quot;%b&quot;,\r\n      major = &quot;months&quot;, minor = &quot;months&quot;)                  +\r\n      scale_y_continuous(&quot;Cumulative Heating Degree Days&quot;) +\r\n      geom_line(aes(Date, HDD.CD), colour = &quot;#dddddd&quot;)     +\r\n      geom_vline(aes(xintercept = eDate),data=seas.df,\r\n      colour=&quot;#ffffcc&quot;, alpha = I(1\/2),\r\n      size = 2)                                            +\r\n      geom_text(aes(x = Date, label = as.integer(HDD.CD),\r\n      hjust = 1.3,vjust = -0.1), data = hdd.seas,\r\n      colour=&quot;#dd8888&quot;)                                    +\r\n      opts(legend.position = &quot;none&quot;,\r\n      title = paste(city,&quot; Meteorological Data Summary for&quot;,\r\n      year, &quot;\\n Cumulative Heating Degree Days&quot;))\r\n\r\nggsave(paste(city, &quot;_&quot;, year, &quot;_HDD.png&quot;, sep = &quot;&quot;), plot = p2,\r\nwidth = 7, height = 6)\r\n<\/pre>\n<p><a href=\"http:\/\/web.colby.edu\/mgimond\/files\/2011\/02\/Waterville_2010_HDD.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-180\" src=\"http:\/\/web.colby.edu\/mgimond\/files\/2011\/02\/Waterville_2010_HDD-300x257.png\" alt=\"\" width=\"300\" height=\"257\" srcset=\"https:\/\/web.colby.edu\/mgimond\/files\/2011\/02\/Waterville_2010_HDD-300x257.png 300w, https:\/\/web.colby.edu\/mgimond\/files\/2011\/02\/Waterville_2010_HDD-1024x877.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You can download data for this example here.<\/p>\n","protected":false},"author":1199,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[12807],"tags":[],"_links":{"self":[{"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/posts\/168"}],"collection":[{"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/users\/1199"}],"replies":[{"embeddable":true,"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/comments?post=168"}],"version-history":[{"count":30,"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/posts\/168\/revisions"}],"predecessor-version":[{"id":494,"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/posts\/168\/revisions\/494"}],"wp:attachment":[{"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/media?parent=168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/categories?post=168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/web.colby.edu\/mgimond\/wp-json\/wp\/v2\/tags?post=168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}