In recent updates I have been trying to remove performance bottlenecks in the package. For plotting spectra with ‘ggspectra’ an obvious performance bottleneck has been the computation of color definitions from wavelengths. The solution to this problem was to use pre-computed color definitions in the most common case, that of human vision. Many functions and operators as well as assignments were repeatedly checking the validity of spectral data. Depending on the logic of the code, several of these checks were redundant. It is now possible to enable and disable checks both internally and in users’ code. This has been used within the package to avoid redundant or unnecessary checks when the logic of the computations ensures that results are valid.
In addition changes in some of the ‘tidyverse’ packages like ‘tibble’, ‘dplyr’, ‘vctrs’ and ‘rlang’ seem to have also improved performance of ‘photobiology’ very significantly. If we consider the time taken to run the test cases as an indication of performance, the gain has been massive, with runtime decreasing to nearly 1/3 of what it was a few months ago. This happened in spite of an increase in the number of test cases from about 3900 to 4270. Currently the 4270 test cases run on my laptop in 23.4 s. Updates ‘rlang’ (0.4.7) and/or ‘tibble’ (3.0.3) appearing this week in CRAN seem to have reduced runtime by about 30% compared to the previous versions.
The take home message is that even though there is a small risk of package updates breaking existing scripts, there is usually an advantage in keeping your installed R packages and R itself up to date. If some results change after an update it is important to investigate which one is correct, as it is both possible that earlier bugs have been fixed or new ones introduced. When needed it is possible, although slightly more cumbersome, to install superseded versions from the source-package archive at CRAN, which keeps every single version of the packages earlier available through CRAN. With respect to R itself, multiple versions can coexist on the same computer so it is not necessary to uninstall the version currently in use to test another one, either older or newer.
This version (0.3.5) adds to geom_table() support for table themes compatible with gridExtra::ttheme_default(). The default table-theme can be changed with function ttheme_set() and several new ttheme constructors are also available as well as support for user defined theme constructors and themes. Changes affect the rendering of tables, and add flexibility to the handling of mapped aesthetics in geom_table().
Note: The default theme for tables in version 0.3.5 uses slightly less padding than in previous versions, and this padding is now proportional to the text’s size instead of fixed. This will not break old code but can slightly change how tables look.
The plots below make use of two of the new table theme constructors. The second plot also uses ggplot2’s theme_dark().
Note: If the full flexibility of ‘gridExtra’ and ‘grid’ are needed for a table, the table can be constructed directly with these packages and added as an inset using geom_grob().
Acknowlegement: This update was encouraged by a recent question at stackoverflow. The tag [ggpmisc] is in use at stackoverflow for questions related to this package.