# Plotting time vs date in R

[This article was first published on

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

**DataDebrief**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Having done the plot with python+matplotlib, thought I would have a go reproducing it in R, using only the builtin “plot”. So, just to recap – this is a plot of the sun times (rise/set,twilight and blinding) as generated by the great python library pyephem. The R code reads in a csv file as output from a modified version of the python code used in my original post.

For completeness, the csv generation code is below:

import ephem import datetime, math import pylab place = ephem.city('Melbourne') start_date = datetime.datetime(2009,12,1,12) end_date = datetime.datetime(2011, 1, 31,12) base_offset = '0' twilight_offset = '-6:00:0.0' # "twilight" = centre of the sun is -6deg ideal horizon eyeline_offset = '15:34:0.0' # arbitrary +15deg sun = ephem.Sun(place) dates = [] sunrise = [] sunset = [] firstlight = [] lastlight = [] firsteyel = [] lasteyel = [] numdays = (end_date - start_date).days dates = [start_date + datetime.timedelta(days=i) for i in xrange(numdays+1)] dates.sort() def dt2m(dt): return (dt.hour*60) + dt.minute def m2hm(x): h = int(x/60) m = int(x%60) return '%(h)02d%(m)02d' % {'h':h,'m':m} sunrise = map(lambda x:dt2m(ephem.localtime(place.next_rising(sun,start=x))),dates) sunset = map(lambda x:dt2m(ephem.localtime(place.next_setting(sun,start=x))),dates) place.horizon = twilight_offset firstlight = map(lambda x:dt2m(ephem.localtime(place.next_rising(sun,start=x))),dates) lastlight = map(lambda x:dt2m(ephem.localtime(place.next_setting(sun,start=x))),dates) place.horizon = eyeline_offset firsteyel = map(lambda x:dt2m(ephem.localtime(place.next_rising(sun,start=x))),dates) lasteyel = map(lambda x:dt2m(ephem.localtime(place.next_setting(sun,start=x))),dates) writer = open("suntimes.csv", "w") writer.write("date,firstlight,sunrise,firsteyel,lasteyel,sunset,lastlight\n") for n in xrange(numdays): writer.write(str(dates[n]) +","+ (m2hm(firstlight[n]))+"," \ + m2hm(sunrise[n])+"," + m2hm(firsteyel[n])+"," + m2hm(lasteyel[n])+"," \ + m2hm(sunset[n])+"," + m2hm(lastlight[n])+"\n") writer.close()

I chose to leave the format of the times, as they resemble the format of the Geoscience Australia times.

This is how the csv file looks:

date,firstlight,sunrise,firsteyel,lasteyel,sunset,lastlight 2009-12-01 00:00:00,0518,0551,0719,1858,2026,2059 2009-12-02 00:00:00,0518,0551,0719,1859,2027,2100 2009-12-03 00:00:00,0518,0551,0719,1859,2028,2101 2009-12-04 00:00:00,0518,0551,0719,1900,2029,2102 2009-12-05 00:00:00,0518,0550,0719,1901,2030,2103

And here’s the resulting graph:

Here’s the R code:

suntimes

To

**leave a comment**for the author, please follow the link and comment on their blog:**DataDebrief**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.