I am a senior university lecturer in physiological plant ecology and principal investigator at the Faculty of Biological and Environmental Sciences of the University of Helsinki.

ggspectra 0.3.10

This update to ‘ggspectra’ tracks changes in ‘photobiology’ 0.10.15, ‘photobiologyWavebands’ 0.5.1 and ‘ggplot2’ 3.4.0, as well as in R 4.1.0. These are mostly deprecations that would trigger warnings. Please, be aware that these versions or later are now required.

The corrected definition of PAR() in ‘photobiologyWavebands’ 0.5.1 is code breaking as this change will cause some plots, especially annotations in them to change, when PAR() has been explicitly called in users’ code for quantities that are not photon based, in most cases with a warning.

New x scales and new functions  for adding secondary x axes have been implemented.

Continue reading

photobiologyWavebands 0.5.1

PAR, or photosynthetically active radiation, as defined by McCree (1972) and used almost universaly in plant sciences is a biological spectral weighting function or BSWF that for spectral irradiance in photon based units takes one of two values for the weights: 0 or 1. So for computations of PAR photon irradiance (or PPFD) it is equivalent to integration over a range of wavelengths without application of a weighting function.

However, PAR, as defined by McCree, has a BSWF with weights that vary with wavelength when used to computed PAR (energy) irradiance, a quantity currently almost never used. Anyway the definition of the PAR()  waveband constructor in previous versions of the package was conceptually wrong, and has now been fixed. If anybody happened to compute PAR energy irradiance with earlier versions of the package, the results obtained were  not weighted. This non-weighted quantity has been in the old literature occasionally also called PAR, but is a “PAR” quantity based on a different defintion than McCree’s. In the new version the result from the same computation is weighted, and differs from the one computed using earlier versions to an extent that depends on the shape of the spectrum.

Continue reading

photobiology 0.10.15

One of the features of the package for a long time has been automatic wavelength interpolation when needed in computations involving two spectra. However, until the current version this behaviour did not extend to operations summarizing multiple spectra stored as members of the same collection, as inconsistent wavelength values triggered an error.

This update to ‘photobiology’ enhances the compatibility of ‘ggspectra’ with spct objects that have been reduced in size by removal or “thinning” of intermediate wavelength values in rectilinear regions.

Spectra containing data for multiple spectra in long form were not well suported as members of mspct collection objects, i.e., some operations available for collections without such members were unsupported.

These changes also enhance the compatibilty of package ‘ggspectra’ with the presence of inconsistent wavelengths across members of collections of spectra.

Continue reading

Enhancing geom_text() and geom_label()

I have defined in package ‘ggpp’ enhanced versions of geom_text() and geom_label() under the names of geom_text_s() and geom_label_s() . The s is for segment, at least it was when I thought of these names. The versions described are included in version 0.5.0.

The idea of better supporting the use of data labels in ggplots is not new. I have been for a long time a user of the repulsive geometries geom_text_repel() and geom_label_repel() from package ‘ggrepel’. I have even contributed some code to ‘ggrepel’.  However, some time back when designing some new position functions, the idea of developing non-repulsive geometries suitable for data labels started growing on me.

Continue reading

ggpp 0.5.0

Version 0.5.0 includes code-breaking enhancements to geom_text_s() and geom_label_s(). The most significative is a mechanism to selectively applying aesthetics to different components of linked labels and text. This replaces the previous use of separate aesthetics applied only to segments or arrows. The reason behind this change is that segments are only links, and not meant to inform about data values on their own.

Continue reading

ooacquire 0.2.6

Version 0.2.6 is a maintenance update, fixing compatibility with recent versions of ‘dplyr’ and the just reelased ‘photobiology’ 0.10.14. It also includes minor enhancements to the interactive user interface (UI) of function acq_irrad_interactive() . OceanInsight recently released version 2.70 of OmniDriver, and removed some functions from the API. For the time being, keep using version 2.56 that is known to work.

Continue reading

An R marathon updating packages

Recent and approaching code-breaking changes in the tidyverse packages ‘tidyselect’, ‘rlang’, ‘tidyr’, ‘dplyr’, ‘readr’ and ‘ggplot2’ meant that keeping my packages fully functional required changes to several of them. None of the changes in these packages made my packages fail CRAN checks, but they either made some functions unusable or triggered inumerable warnings in some use cases. In some cases the behaviour and warnings were weird and rather unpredictable, specially those due to the changes in ‘tidyselect’ version 1.2.0, which were also visible in ‘dplyr’ and ‘tidyr’. So below is a summary of my R-intensive week.

Continue reading

ggspectra 0.3.9

Some of the code in this package is rather complex and contained syntax and constructs that were known for some time to be on their way to deprecation and removal in different packages from the ‘tidyverse’. Updating the package to the syntax used in current ‘ggplot2’ versions had been in my to do list for some time. Now the update had to be done, and it is now done.

Continue reading

ggpmisc 0.5.1

Version 0.5.1 brings additional enhancements to the annotations based on model fits. These enhancements improve traceability by updating statistics to return additional information about the fitted models. Functions in ‘ggplot2’ that had been earlier announced as being at their end-of-life have now been deprecated. Some instances aes_() had remained lingering in the code and had to be replaced by aes() .

Continue reading