photobiology 0.9.27

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 version 0.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.

Documentation web site at includes all help pages, with output from all examples, and vignettes in HTML format.
NOTE: The updated package is on its way to CRAN.

Please raise issues concerning bugs or enhancements to this package through Bitbucket

ggpmisc 0.3.1

After the previous major update to ‘ggpmisc’ (0.3.0), a follow up (0.3.1) with multiple new features and smoothed rough edges for some of the features added in version 3.0.0. Package documentation is available at as a web site.

The enhancements in this and the previous update to ‘ggpmisc’ are made possible by changes to ‘ggplot2’ (>= 3.0.0) made while adding support for sf (simple features).

The functions in ‘ggpmisc’ (>= 0.3.1) are related to different kinds of annotations and insets in ggplots. Annotations of plots with fitted-model equations, fit diagnosis, ANOVA and summary tables, highlighting and labelling of peaks and valleys in curves, and local density-based highlighting or labelling in scatter plots. Additionally specializations of the ggplot() constructor allow on-the-fly conversion of time-series. Two new geoms join geom_table() added in version 0.3.0, geom_plot() and geom_grob(). These three geoms make it possible to add tables, ggplots and arbitrary graphical objects (grobs) as insets to plots respecting the the Grammar of Graphics paradigm.

Inset plot showing means per group.
Inset grobs

A set of new geometries produce marginal annotations: geom_x_margin_point(), geom_y_margin_point(), geom_x_margin_arrow(), geom_y_margin_arrow(), geom_x_margin_grob() and geom_y_margin_grob().

Marginal “points” showing means per group.

Another novel feature is based on the addition of two new aesthetics npcx and npcy, the corresponding scales scale_npcx_continuous() and scale_npcy_continuous(), and several new geometries that make use of then: geom_text_npc(), geom_label_npc(), geom_table_npc(), geom_plot_npc() and geom_grob_npc(). These allow to position insets and annotations relative to the dimensions of the plotting area instead of using native data units. Using "npc" units is more natural for labels or insets that are not directly related to data but that look better if positioned consistently across multiple panels or multiple separately produced plots. One improvement to the stats from earlier versions of ‘ggpmisc’ is the use of these new geoms to achieve more consistent location for insets and labels.

Quadrant counts with panels.
Fitted equations in panels with free y limits.
Inset tables at different positions in different panels.

As in the announcement of the previous version, I have included some example plots taken from the documentation of the package. In all cases annotations are generated automatically, but formatting is flexible.

NOTE: The new version of ‘ggpmisc’ will be soon submitted to CRAN .

photobiologyWavebands 0.4.3

The main changes from version 0.4.2 the previous CRAN release, are:

  • Add waveband definitions for non-standard split of the UVA band with constructors UVAsw() and UVAlw().
  • Add two new definitions of far-red as used in remote sensing: "RedEdge20" and "RedEdge40".
  • Minor updates to documentation.

Documentation web site at

NOTE: The updated package is available through CRAN.

Please raise issues concerning bugs or enhancements to this package through Bitbucket at

ggspectra 0.3.2

The changes from version 0.3.1, the current CRAN release, are:

  • Make autoplot() the recommended method and deprecate the use of plot(), which remains available for backwards compatibility.
  • Fix bug in autoplot() which failed to set the title to the name of the object when requested.
  • Add ‘ggplot2’ and ‘photobiology’ as required dependencies so that they are automatically loaded when ‘ggspectra’ is loaded.

The justification for renaming the plot() methods to autoplot() is that these methods defined in our package match better those of other specializations of autoplot() than of those of plot(), both in terms of the objects returned (ggplots) and in terms of their role as a fast way of plotting objects belonging to classes defined in independently developed packages. Some years ago, early in the development of ‘ggspectra’ it seemed more natural to use plot as the  method to specialize.

As most of the methods and functions defined take as input objects belonging to classes defined in package ‘photobiology’ and return objects belonging to classes defined in package ‘ggplot2’, these two packages need in most cases to be loaded for ‘ggspectra’ to work as intended.

Documentation web site at

NOTE: The updated package is in CRAN.

Please raise issues concerning bugs or enhancements to this package through Bitbucket at