This update includes a fix for a bug affecting autoplot() methods in the case of plotting multiple spectra in the same plot. It also includes improvements to the easy of use through the addition new or enhancements to existing convenience methods and functions. The required version of ‘photobiology’ is now 0.9.28 or higher.
The changes from version 0.3.2, the current CRAN release, are:
Make autotitle() the recommended method and deprecate the use of ggtitle_spct(), which remains available for backwards compatibility.
Enhance autotitle() to optionally set the caption in addition to title and subtitle of a plot.
Add support for setting of the plot caption controlled with the annotations argument of autoplot() methods.
Add convenience functions to make easier to modify default arguments used by autoplot() methods through R options: set_annotations_default() and set_w.band_default().
Add support for simultaneously adding and removing annotations from the current default by accepting lists of character vectors in addition to character vectors as argument for parameter annotations in autoplot() methods.
Add support in multiplot() function for adding a title to the composite figure.
Track changes in ‘photobiology’ (>= 0.9.28) adding support for using the "how.measured" attribute in plot titles, subtitles and captions.
Use a compute panel function instead of a compute group function in stat_wb_label(), stat_wb_box() and stat_wl_strip(), solving a bug affecting autoplot() methods when called with multiple spectra.
The justification for renaming the ggtitle_spct() function to autotitle() is that the new name is consistent with autoplot() and autolayer() in taking an R object of a specific class as first argument and automatically extracting the information from it.
Changes from version0.9.27, the most recent CRAN release, are:
Fix bug in getTimeUnit() method. This method would fail for "source_spct" objects containing spectral fluence data (a recent enhancement) and cause failure of the print() method for these same objects.
Add setHowMeasured() and getHowMeasured() methods, adding support for a new metadata attribute.
This update is in part the result of comparing the values returned by functions sun_angles() and day_night() to those returned by equivalent functions from other R packages and to the online NOAA Solar Calculator (considered the best implementation of Meuus astronomical algirithms, which are currently the most precise available). To see the whole story as it develops, please, have a look at my post describing these tests.
Changes from version0.9.26, the most recent CRAN release, are:
Improve performance of sun_angles() and day_night() and implement Meuus algorithm for julian day. End result is slightly slower performance but higher precision and broader range of dates that are handled correctly.
Make sure functions work correctly when a tibble is passed as argument to parameter geocode. In addition tolerate address column being a factor.
Values returned by sun_angles() and day_night() have changed very slightly as a result of the improved julian day calculation.
As far as I know there are in CRAN four R packages implementing the computations for the position of the sun and times of sunrise and sunset: ‘photobiology’, ‘fishmethods’, ‘solartime’ and ‘suncalc’.
The functions sun_angles() and day_night() from package ‘photobiology’ use Meeus equations as used by NOAA Solar Calculator https://www.esrl.noaa.gov/gmd/grad/solcalc/ which could be more precise than those in NOAA’s Excel worksheet which implement a simplified version of the Meeus equations especially for far into the past or far into the future calculations. The approximations based on Meuus equations are very good for years between 1800 and 2100 and results should still be sufficiently accurate for the range from -1000 to 3000 as long as the computation of Julian dates is correct. The Excel implementation is only valid for dates between 1901 and 2099 because of how Julian dates are computed in Excel.
Function astrocalc4r() from package ‘fishmethods’ also implements Meeus equations (the authors work at NOAA). Function computeSunPosition() from package ‘solartime’ uses unspecified equations and function getSunlightPosition() is an R interface to the ‘suncalc.js’ library, part of the ‘SunCalc.net’ project <http://suncalc.net>.
Function computeSunPosition() from package ‘solartime’ uses unspecified equations and function getSunlightPosition() is an R interface to the ‘suncalc.js’ library, part of the ‘SunCalc.net’ project <http://suncalc.net>.
UPDATED on 2019-04-24
I have noticed significant differences in the values returned by equivalent functions from different packages. Up to now the tests on the functions of my own package ‘photobiology’ have revealed only very small mismatches to the NOAA Solar Calculator. These small errors, noticeable for dates far from the present, were due to the use of base R’s julian() function, which is not designed to be precise enough for astronomical calculations. The code now in the repository at Bitbucket has been revised to use Meuus’ algorithm for the calculation of Julian days removing this source of small discrepancies.
In contrast, while testing ‘photobiology’ against other packages, I seem to have found a bug in function astrocalc4r() from R package ‘fishmethods’.
A minimal example follows:
By only changing the hour passed as argument different times for sunrise, sunset and daylength are returned even though the day is the same. The differences are larger at high than at low latitudes. The maximum difference for the example above is 1/4 h for daylength. Comparison against the NOAA Solar Calculator shows even larger differences.
(The bug has been reported to the maintainer of package ‘fishmethods’.)