My new book was published on 28 July. Within the next few days I will make available on-line supplementary material, and explain how I created in R the word cloud in the front cover of the book. The word list I used is that for the R index from the book. I typeset the book using LaTeX. It is currently available from the publisher through the book’s web page.
Package ‘ggpmisc’ focuses mainly on plot annotations. The new features added in this version required quite minor code changes but add features that I hope will be found useful.
Changes from version 0.3.5 the most recent CRAN release, are:
Annotations using NPC coordinates
NPC or native plot coordinates, are very useful for annotations. On the other hand, they are not of any use for plotting actual data. The geometries using this kind of position coordinates defined in ‘ggpmisc’ make it possible to have different annotations in the different panels when using facets. Traditional annotations in ‘ggplot2’ do not use the data, but instead take as arguments constant values for the aesthetics, and consequently add identical annotations to all panels. Annotations in ‘ggplot2’ use data coordinates. In many cases, the desired position of annotations is unrelated to the data, but instead related to the native coordinates of the plotting viewport. Using NPC coordinates for annotations allows consistent positioning, which is very important from the graphical design perspective.
Starting from version 0.3.6 ‘ggpmisc’ exports a modified definition of
annotate() from ‘ggplot2’. The modification adds support of the position aesthetics
npcy retaining all other functionality unaltered. As a consequence geometries
"grob_npc" can now be used as the first argument to
annotate(). In addition single ggplots, data frames and grobs as well as lists of such objects are accepted arguments to
library(ggpmisc) # plot to be inset p <- ggplot(mtcars, aes(factor(cyl), mpg, colour = factor(cyl))) + stat_boxplot() + labs(y = NULL) + theme_bw(9) + theme(legend.position = "none") # main plot with p as an inset ggplot(mtcars, aes(wt, mpg, colour = factor(cyl))) + geom_point() + annotate("plot_npc", npcx = "left", npcy = "bottom", label = p) + expand_limits(y = 0, x = 0)
Tagging equations with group labels (experimental)
Starting from version 0.3.6
stat_poly_eq() supports use of grouping with equations and identifying them by using labels. Previously use of the color aesthetic was the only way of “linking” equations to plotted curves, which is frequently distracting or unavailable for printing. After some past failed attempts at implementing this, I recently realized that using a pseudo-aesthetic made implementation very easy and its use flexible and straightforward. The catch is that this relies on undocumented behavior of ‘ggplot2’ and will not necessarily work with future versions of ‘ggplot2’. Statistic
stat_poly_eq() now copies
grp.label from its input into its returned value. One can map any variable to the pseudo-aesthetic
grp.label to achieve this. Values are passed to the output only if all values within the group are the same, otherwise
grp.label is filled with
NA. The signature of
stat_poly_eq() remains unchanged.
library(ggpmisc) my.formula <- y ~ x ggplot(mtcars, aes(wt, mpg, linetype = factor(cyl), shape = factor(cyl), grp.label = factor(cyl))) + geom_point() + stat_smooth(formula = my.formula, method = "lm", colour = "black") + stat_poly_eq(aes(label = stat(paste("bold(\"cyl\"~~", grp.label, "*':')~~~", eq.label, sep = ""))), formula = my.formula, label.x = "right", parse = TRUE) + theme_classic()
Marking and or labeling group centroids
stat_centroid() applies the same function to
y and this function defaults to
mean(). In the case of
stat_summary_xy() the functions applied to
y are passed as separate arguments, and they both default to simply copying their input.
Starting from version 0.3.6, statistic
stat_poly_eq() can optionally generate character strings encoded in markdown suitable for
geom_richtext() from package ‘ggtext’.
Acknowlegement: This update was encouraged by recent questions at stackoverflow. The tag
[ggpmisc] is in use at stackoverflow for questions related to this package.
Documentation web site at http://docs.r4photobiology.info/ggpmisc/ includes all help pages, with output from all examples, and vignettes in HTML format.
NOTE: The new version of the package is on its way to CRAN.
Please raise issues concerning bugs or enhancements to this package through Bitbucket https://bitbucket.org/aphalo/ggpmisc/issues.
Package documentation web site at: https://docs.r4photobiology.info/learnrbook/
This is the first version submitted to CRAN for the book as published in the R Series.
Versions starting from 1.0.0 are for the book as published in the R Series. Earlier versions were for various partial drafts of the book, as pre-published through LeanPub. The book was published a few of weeks ago, but shipping has started in the last few days.
NOTE: The updated package is on its way to CRAN.
Please raise issues concerning bugs or enhancements to this package through Bitbucket https://bitbucket.org/aphalo/learnrbook-pkg/issues
Package documentation web site at: https://docs.r4photobiology.info/photobiology/
This update adds a new attribute to objects of class
response_spct to enable storage of metadata to distinguish action spectra from response spectra. All other changes are tweaks to make use easier or are minor bug fixes, which do not add important new functionality.
Changes from version 0.10.4 the most recent CRAN release, are:
- Implement attribute
"response.type"to distinguish between response spectra and action spectra stored in
- Add methods
- Add method
drop_user_cols()to remove user-defined columns from spectra.
- Add method
collect2mspct()and rename method
- Add convenience function
spct_metadata()to query the value of metadata attributes.
add_attr2tb()expanding support to all metadata attributes.
smooth_spct()methods adding new parameter
compare_spct()function to accept scaled and normalized spectra with a warning (instead of triggering an error).
- Make the pre-computed color data private.
rbindspct()to gracefully handle duplicate member names in its input.
smooth_spct()methods to fix bug in handling of strength in
NOTE: The updated package is on its way to CRAN.
Please raise issues concerning bugs or enhancements to this package through Bitbucket https://bitbucket.org/aphalo/photobiology/issues
I created the word cloud on the cover of “Learn R as a Language” using an R script that takes as input the file for the book index, as generated when creating the PDF from the LaTeX source files. This input file contained quite a lot of additional information, like font changes and page numbers that needed to be stripped into a clean list of words. Only later I realized that it would have been easier to produce a cleaner word list to start with. So, I first present the code revised to work with a simpler word list. This is actually tested with the book files to work. If you want to do something similar for your own book, follow the revised code in first section below. If you want to see the “hacked-up” code I really used for the cover as included in the book, it is in the second section below.