From b2a5dd2034593e08d4232b11bbcc0885376ab0b0 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Wed, 31 Jan 2024 11:01:23 -0500 Subject: [PATCH 01/21] Add hjust and vjust arguments to silhouette plotting functions --- R/add_phylopic.r | 14 ++++++++++++++ R/add_phylopic_base.r | 28 ++++++++++++++++++++++++---- R/geom_phylopic.R | 27 ++++++++++++++++++++++----- man/add_phylopic.Rd | 14 ++++++++++++++ man/add_phylopic_base.Rd | 14 ++++++++++++++ man/geom_phylopic.Rd | 2 ++ 6 files changed, 90 insertions(+), 9 deletions(-) diff --git a/R/add_phylopic.r b/R/add_phylopic.r index 7d040909..8964ff0c 100644 --- a/R/add_phylopic.r +++ b/R/add_phylopic.r @@ -33,6 +33,16 @@ #' @param vertical \code{logical}. Should the silhouette be flipped vertically? #' @param angle \code{numeric}. The number of degrees to rotate the silhouette #' clockwise. The default is no rotation. +#' @param hjust \code{numeric}. A numeric vector between 0 and 1 specifying +#' horizontal justification (left = 0, center = 0.5, right = 1). Note that, +#' due to the enforcement of the silhouette's aspect ratio, there may be +#' unexpected behavior due to interactions between the aspect ratio of the +#' plot and the aspect ratio of the silhouette. +#' @param vjust \code{numeric}. A numeric vector between 0 and 1 specifying +#' vertical justification (top = 1, middle = 0.5, bottom = 0). Note that, due +#' to the enforcement of the silhouette's aspect ratio, there may be +#' unexpected behavior due to interactions between the aspect ratio of the +#' plot and the aspect ratio of the silhouette. #' @param remove_background \code{logical}. Should any white background be #' removed from the silhouette(s)? See [recolor_phylopic()] for details. #' @param verbose \code{logical}. Should the attribution information for the @@ -86,6 +96,7 @@ add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, x, y, ysize = Inf, alpha = 1, color = NA, fill = "black", horizontal = FALSE, vertical = FALSE, angle = 0, + hjust = 0.5, vjust = 0.5, remove_background = TRUE, verbose = FALSE) { if (all(sapply(list(img, name, uuid), is.null))) { stop("One of `img`, `name`, or `uuid` is required.") @@ -110,12 +121,15 @@ add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, horizontal <- rep_len(horizontal, max_len) vertical <- rep_len(vertical, max_len) angle <- rep_len(angle, max_len) + hjust <- rep_len(hjust, max_len) + vjust <- rep_len(vjust, max_len) # Put together all of the variables args <- list(geom = GeomPhylopic, x = x, y = y, size = ysize, alpha = alpha, color = color, fill = fill, horizontal = horizontal, vertical = vertical, angle = angle, + hjust = hjust, vjust = vjust, remove_background = remove_background, verbose = verbose, filter = list(filter)) # Only include the one silhouette argument diff --git a/R/add_phylopic_base.r b/R/add_phylopic_base.r index a8790cdf..e8357940 100644 --- a/R/add_phylopic_base.r +++ b/R/add_phylopic_base.r @@ -35,6 +35,16 @@ #' @param vertical \code{logical}. Should the silhouette be flipped vertically? #' @param angle \code{numeric}. The number of degrees to rotate the silhouette #' clockwise. The default is no rotation. +#' @param hjust \code{numeric}. A numeric vector between 0 and 1 specifying +#' horizontal justification (left = 0, center = 0.5, right = 1). Note that, +#' due to the enforcement of the silhouette's aspect ratio, there may be +#' unexpected behavior due to interactions between the aspect ratio of the +#' plot and the aspect ratio of the silhouette. +#' @param vjust \code{numeric}. A numeric vector between 0 and 1 specifying +#' vertical justification (top = 1, middle = 0.5, bottom = 0). Note that, due +#' to the enforcement of the silhouette's aspect ratio, there may be +#' unexpected behavior due to interactions between the aspect ratio of the +#' plot and the aspect ratio of the silhouette. #' @param remove_background \code{logical}. Should any white background be #' removed from the silhouette(s)? See [recolor_phylopic()] for details. #' @param verbose \code{logical}. Should the attribution information for the @@ -101,6 +111,7 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, x = NULL, y = NULL, ysize = NULL, alpha = 1, color = NA, fill = "black", horizontal = FALSE, vertical = FALSE, angle = 0, + hjust = 0.5, vjust = 0.5, remove_background = TRUE, verbose = FALSE) { if (all(sapply(list(img, name, uuid), is.null))) { stop("One of `img`, `name`, or `uuid` is required.") @@ -111,6 +122,12 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, if (any(alpha > 1 | alpha < 0)) { stop("`alpha` must be between 0 and 1.") } + if (any(data$hjust > 1 | data$hjust < 0)) { + stop("`hjust` must be between 0 and 1.") + } + if (any(data$vjust > 1 | data$vjust < 0)) { + stop("`vjust` must be between 0 and 1.") + } if (!is.logical(verbose)) { stop("`verbose` should be a logical value.") } @@ -186,7 +203,7 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, ysize <- grconvertY(ysize, to = "ndc") - grconvertY(0, to = "ndc") invisible(mapply(function(img, x, y, ysize, alpha, color, fill, - horizontal, vertical, angle) { + horizontal, vertical, angle, hjust, vjust) { if (is.null(img)) return(NULL) if (horizontal || vertical) img <- flip_phylopic(img, horizontal, vertical) @@ -209,14 +226,17 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, all(is.finite(img@summary@xscale)) && diff(img@summary@xscale) != 0 && is.numeric(img@summary@yscale) && length(img@summary@yscale) == 2 && all(is.finite(img@summary@yscale)) && diff(img@summary@yscale) != 0) { - grid.picture(img, x = x, y = y, height = ysize, expansion = 0) + grid.picture(img, x = x, y = y, height = ysize, expansion = 0, + just = c(hjust, vjust)) } else { return(NULL) } } else { # png - grid.raster(img, x = x, y = y, height = ysize) + grid.raster(img, x = x, y = y, height = ysize, + just = c(hjust, vjust)) } }, img = imgs, x = x, y = y, ysize = ysize, alpha = alpha, color = color, - fill = fill, horizontal = horizontal, vertical = vertical, angle = angle)) + fill = fill, horizontal = horizontal, vertical = vertical, angle = angle, + hjust = hjust, vjust = vjust)) } diff --git a/R/geom_phylopic.R b/R/geom_phylopic.R index 28fa4c17..f5419970 100644 --- a/R/geom_phylopic.R +++ b/R/geom_phylopic.R @@ -47,6 +47,8 @@ phylopic_env <- new.env() #' - horizontal #' - vertical #' - angle +#' - hjust +#' - vjust #' #' Learn more about setting these aesthetics in [add_phylopic()]. #' @@ -121,10 +123,12 @@ geom_phylopic <- function(mapping = NULL, data = NULL, GeomPhylopic <- ggproto("GeomPhylopic", Geom, required_aes = c("x", "y"), non_missing_aes = c("size", "alpha", "color", "fill", - "horizontal", "vertical", "angle"), + "horizontal", "vertical", "angle", + "hjust", "vjust"), optional_aes = c("img", "name", "uuid"), # one and only one of these default_aes = aes(size = 6, alpha = 1, color = NA, fill = "black", - horizontal = FALSE, vertical = FALSE, angle = 0), + horizontal = FALSE, vertical = FALSE, angle = 0, + hjust = 0.5, vjust = 0.5), extra_params = c("na.rm", "remove_background", "verbose", "filter"), setup_data = function(data, params) { # Clean data @@ -225,6 +229,12 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, if (any(data$alpha > 1 | data$alpha < 0)) { stop("`alpha` must be between 0 and 1.") } + if (any(data$hjust > 1 | data$hjust < 0)) { + stop("`hjust` must be between 0 and 1.") + } + if (any(data$vjust > 1 | data$vjust < 0)) { + stop("`vjust` must be between 0 and 1.") + } # Transform data data <- coord$transform(data, panel_params) @@ -258,6 +268,7 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, phylopicGrob(data$img[[i]], data$x[i], data$y[i], heights[i], data$colour[i], data$fill[i], data$alpha[i], data$horizontal[i], data$vertical[i], data$angle[i], + data$hjust[i], data$vjust[i], remove_background) } }) @@ -360,9 +371,10 @@ phylopic_key_glyph <- function(img = NULL, name = NULL, uuid = NULL) { } else { asp_rat <- aspect_ratio(imgs[[i]]) height <- unit(ifelse(asp_rat >= 1, .95 / asp_rat, .95), "npc") - grob <- phylopicGrob(imgs[[i]], 0.5, 0.5, + grob <- phylopicGrob(imgs[[i]], x = 0.5, y = 0.5, height, data$colour[1], data$fill[1], data$alpha[1], data$horizontal[1], data$vertical[1], data$angle[1], + hjust = 0.5, vjust = 0.5, phylopic_env$remove_background) } if (i == length(imgs)) { @@ -379,6 +391,7 @@ phylopic_key_glyph <- function(img = NULL, name = NULL, uuid = NULL) { #' @importFrom methods slotNames phylopicGrob <- function(img, x, y, height, color, fill, alpha, horizontal, vertical, angle, + hjust, vjust, remove_background) { # modified from add_phylopic for now if (horizontal || vertical) img <- flip_phylopic(img, horizontal, vertical) @@ -401,7 +414,9 @@ phylopicGrob <- function(img, x, y, height, color, fill, alpha, # modified from # https://github.com/k-hench/hypoimg/blob/master/R/hypoimg_recolor_svg.R img_grob <- pictureGrob(img, x = x, y = y, height = height, - default.units = "native", expansion = 0) + width = height * aspect_ratio(img), + default.units = "native", expansion = 0, + just = c(hjust, vjust)) img_grob <- gList(img_grob) img_grob <- gTree(children = img_grob) } else { @@ -409,7 +424,9 @@ phylopicGrob <- function(img, x, y, height, color, fill, alpha, } } else { # png img_grob <- rasterGrob(img, x = x, y = y, height = height, - default.units = "native") + width = height * aspect_ratio(img), + default.units = "native", + just = c(hjust, vjust)) } return(img_grob) } diff --git a/man/add_phylopic.Rd b/man/add_phylopic.Rd index fb088cda..d6713a2f 100644 --- a/man/add_phylopic.Rd +++ b/man/add_phylopic.Rd @@ -18,6 +18,8 @@ add_phylopic( horizontal = FALSE, vertical = FALSE, angle = 0, + hjust = 0.5, + vjust = 0.5, remove_background = TRUE, verbose = FALSE ) @@ -66,6 +68,18 @@ horizontally?} \item{angle}{\code{numeric}. The number of degrees to rotate the silhouette clockwise. The default is no rotation.} +\item{hjust}{\code{numeric}. A numeric vector between 0 and 1 specifying +horizontal justification (left = 0, center = 0.5, right = 1). Note that, +due to the enforcement of the silhouette's aspect ratio, there may be +unexpected behavior due to interactions between the aspect ratio of the +plot and the aspect ratio of the silhouette.} + +\item{vjust}{\code{numeric}. A numeric vector between 0 and 1 specifying +vertical justification (top = 1, middle = 0.5, bottom = 0). Note that, due +to the enforcement of the silhouette's aspect ratio, there may be +unexpected behavior due to interactions between the aspect ratio of the +plot and the aspect ratio of the silhouette.} + \item{remove_background}{\code{logical}. Should any white background be removed from the silhouette(s)? See \code{\link[=recolor_phylopic]{recolor_phylopic()}} for details.} diff --git a/man/add_phylopic_base.Rd b/man/add_phylopic_base.Rd index affdfb32..6640e514 100644 --- a/man/add_phylopic_base.Rd +++ b/man/add_phylopic_base.Rd @@ -18,6 +18,8 @@ add_phylopic_base( horizontal = FALSE, vertical = FALSE, angle = 0, + hjust = 0.5, + vjust = 0.5, remove_background = TRUE, verbose = FALSE ) @@ -68,6 +70,18 @@ horizontally?} \item{angle}{\code{numeric}. The number of degrees to rotate the silhouette clockwise. The default is no rotation.} +\item{hjust}{\code{numeric}. A numeric vector between 0 and 1 specifying +horizontal justification (left = 0, center = 0.5, right = 1). Note that, +due to the enforcement of the silhouette's aspect ratio, there may be +unexpected behavior due to interactions between the aspect ratio of the +plot and the aspect ratio of the silhouette.} + +\item{vjust}{\code{numeric}. A numeric vector between 0 and 1 specifying +vertical justification (top = 1, middle = 0.5, bottom = 0). Note that, due +to the enforcement of the silhouette's aspect ratio, there may be +unexpected behavior due to interactions between the aspect ratio of the +plot and the aspect ratio of the silhouette.} + \item{remove_background}{\code{logical}. Should any white background be removed from the silhouette(s)? See \code{\link[=recolor_phylopic]{recolor_phylopic()}} for details.} diff --git a/man/geom_phylopic.Rd b/man/geom_phylopic.Rd index 78e08879..d9d64d00 100644 --- a/man/geom_phylopic.Rd +++ b/man/geom_phylopic.Rd @@ -127,6 +127,8 @@ Also, outline colors do not currently work for png array objects. \item horizontal \item vertical \item angle +\item hjust +\item vjust Learn more about setting these aesthetics in \code{\link[=add_phylopic]{add_phylopic()}}. } From 21908b85b37f73ad7d27f43700e305b956123c96 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Wed, 31 Jan 2024 16:30:11 -0500 Subject: [PATCH 02/21] Fix justification for add_phylopic_base and fix failing tests --- DESCRIPTION | 2 +- R/add_phylopic_base.r | 24 ++++++-------- R/geom_phylopic.R | 1 - .../phylopic-in-background.svg | 11 +++---- .../phylopic-key-glyph-with-img.svg | 21 ++++++------ .../phylopic-key-glyph-with-larger-glyphs.svg | 32 +++++++++---------- .../phylopic-key-glyph-with-uuid.svg | 21 ++++++------ .../geom_phylopic/phylopic-key-glyph.svg | 32 +++++++++---------- 8 files changed, 66 insertions(+), 78 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index cebe8443..1d3ed2d5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -20,7 +20,7 @@ Encoding: UTF-8 LazyData: true biocViews: Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.1 Depends: R (>= 4.0) Imports: diff --git a/R/add_phylopic_base.r b/R/add_phylopic_base.r index e8357940..51143c24 100644 --- a/R/add_phylopic_base.r +++ b/R/add_phylopic_base.r @@ -36,15 +36,9 @@ #' @param angle \code{numeric}. The number of degrees to rotate the silhouette #' clockwise. The default is no rotation. #' @param hjust \code{numeric}. A numeric vector between 0 and 1 specifying -#' horizontal justification (left = 0, center = 0.5, right = 1). Note that, -#' due to the enforcement of the silhouette's aspect ratio, there may be -#' unexpected behavior due to interactions between the aspect ratio of the -#' plot and the aspect ratio of the silhouette. +#' horizontal justification (left = 0, center = 0.5, right = 1). #' @param vjust \code{numeric}. A numeric vector between 0 and 1 specifying -#' vertical justification (top = 1, middle = 0.5, bottom = 0). Note that, due -#' to the enforcement of the silhouette's aspect ratio, there may be -#' unexpected behavior due to interactions between the aspect ratio of the -#' plot and the aspect ratio of the silhouette. +#' vertical justification (top = 1, middle = 0.5, bottom = 0). #' @param remove_background \code{logical}. Should any white background be #' removed from the silhouette(s)? See [recolor_phylopic()] for details. #' @param verbose \code{logical}. Should the attribution information for the @@ -122,10 +116,10 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, if (any(alpha > 1 | alpha < 0)) { stop("`alpha` must be between 0 and 1.") } - if (any(data$hjust > 1 | data$hjust < 0)) { + if (any(hjust > 1 | hjust < 0)) { stop("`hjust` must be between 0 and 1.") } - if (any(data$vjust > 1 | data$vjust < 0)) { + if (any(vjust > 1 | vjust < 0)) { stop("`vjust` must be between 0 and 1.") } if (!is.logical(verbose)) { @@ -226,14 +220,16 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, all(is.finite(img@summary@xscale)) && diff(img@summary@xscale) != 0 && is.numeric(img@summary@yscale) && length(img@summary@yscale) == 2 && all(is.finite(img@summary@yscale)) && diff(img@summary@yscale) != 0) { - grid.picture(img, x = x, y = y, height = ysize, expansion = 0, - just = c(hjust, vjust)) + xsize <- grconvertX( + grconvertY(ysize, from = "ndc", to = "inches") * aspect_ratio(img), + from = "inches", to = "ndc") + grid.picture(img, x = x, y = y, height = ysize, width = xsize, + expansion = 0, just = c(hjust, vjust)) } else { return(NULL) } } else { # png - grid.raster(img, x = x, y = y, height = ysize, - just = c(hjust, vjust)) + grid.raster(img, x = x, y = y, height = ysize, just = c(hjust, vjust)) } }, img = imgs, x = x, y = y, ysize = ysize, alpha = alpha, color = color, diff --git a/R/geom_phylopic.R b/R/geom_phylopic.R index f5419970..1b8cae82 100644 --- a/R/geom_phylopic.R +++ b/R/geom_phylopic.R @@ -424,7 +424,6 @@ phylopicGrob <- function(img, x, y, height, color, fill, alpha, } } else { # png img_grob <- rasterGrob(img, x = x, y = y, height = height, - width = height * aspect_ratio(img), default.units = "native", just = c(hjust, vjust)) } diff --git a/tests/testthat/_snaps/add_phylopic_base/phylopic-in-background.svg b/tests/testthat/_snaps/add_phylopic_base/phylopic-in-background.svg index 97a8fc59..66766107 100644 --- a/tests/testthat/_snaps/add_phylopic_base/phylopic-in-background.svg +++ b/tests/testthat/_snaps/add_phylopic_base/phylopic-in-background.svg @@ -46,14 +46,13 @@ 1 - - + + - - - - + + + diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg index f972aee8..62469642 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg @@ -29,25 +29,24 @@ - - + + - - - - + + + - - + + - - - + + + diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg index f3dfeb3f..02f0d27a 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg @@ -29,25 +29,24 @@ - - + + - - - - + + + - - + + - - - + + + @@ -72,14 +71,13 @@ name - - + + - - - - + + + diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg index fc54e768..3442b141 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg @@ -29,25 +29,24 @@ - - + + - - - - + + + - - + + - - - + + + diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg index 5415915b..1e64fdca 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg @@ -29,25 +29,24 @@ - - + + - - - - + + + - - + + - - - + + + @@ -72,14 +71,13 @@ name - - + + - - - - + + + From 5449a8d451ce9675c54c2d750a3fc953e59c895e Mon Sep 17 00:00:00 2001 From: William Gearty Date: Wed, 31 Jan 2024 17:05:44 -0500 Subject: [PATCH 03/21] Update docs --- man/add_phylopic_base.Rd | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/man/add_phylopic_base.Rd b/man/add_phylopic_base.Rd index 6640e514..2f4ab8b6 100644 --- a/man/add_phylopic_base.Rd +++ b/man/add_phylopic_base.Rd @@ -71,16 +71,10 @@ horizontally?} clockwise. The default is no rotation.} \item{hjust}{\code{numeric}. A numeric vector between 0 and 1 specifying -horizontal justification (left = 0, center = 0.5, right = 1). Note that, -due to the enforcement of the silhouette's aspect ratio, there may be -unexpected behavior due to interactions between the aspect ratio of the -plot and the aspect ratio of the silhouette.} +horizontal justification (left = 0, center = 0.5, right = 1).} \item{vjust}{\code{numeric}. A numeric vector between 0 and 1 specifying -vertical justification (top = 1, middle = 0.5, bottom = 0). Note that, due -to the enforcement of the silhouette's aspect ratio, there may be -unexpected behavior due to interactions between the aspect ratio of the -plot and the aspect ratio of the silhouette.} +vertical justification (top = 1, middle = 0.5, bottom = 0).} \item{remove_background}{\code{logical}. Should any white background be removed from the silhouette(s)? See \code{\link[=recolor_phylopic]{recolor_phylopic()}} for details.} From c427cb5cd8552534a60b7caab0676b8a5d901c38 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Mon, 5 Feb 2024 17:35:50 -0500 Subject: [PATCH 04/21] Add height/width arguments --- NAMESPACE | 1 + NEWS.md | 3 + R/add_phylopic.r | 31 +++- R/add_phylopic_base.r | 81 ++++++--- R/add_phylopic_legend.R | 22 ++- R/geom_phylopic.R | 155 ++++++++++++++---- R/pick_phylopic.R | 2 +- README.md | 10 +- man/add_phylopic.Rd | 20 ++- man/add_phylopic_base.Rd | 28 +++- man/add_phylopic_legend.Rd | 12 +- man/geom_phylopic.Rd | 19 ++- .../phylopic-key-glyph-with-img.svg | 76 ++++----- .../phylopic-key-glyph-with-uuid.svg | 76 ++++----- .../geom_phylopic/phylopic-key-glyph.svg | 76 ++++----- tests/testthat/test-add_phylopic.R | 2 +- tests/testthat/test-add_phylopic_base.R | 6 +- tests/testthat/test-add_phylopic_legend.R | 8 +- tests/testthat/test-geom_phylopic.R | 24 +-- 19 files changed, 416 insertions(+), 236 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 3611b9fc..07334d57 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -74,6 +74,7 @@ importFrom(httr,content) importFrom(jsonlite,fromJSON) importFrom(jsonlite,toJSON) importFrom(knitr,combine_words) +importFrom(lifecycle,deprecated) importFrom(methods,is) importFrom(methods,slotNames) importFrom(pbapply,pblapply) diff --git a/NEWS.md b/NEWS.md index c02d2188..77e6e982 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,9 @@ * Added add_phylopic_legend (#83) * Added permalink generation option to get_attribution (#81) +* Added ability to specify horizontal and vertical justification of silhouettes (#101) +* Added ability to specify width instead of height for silhouettes (#103) + * Note that all "ysize" and "size" arguments/aesthetics are now deprecated in favor of "height" and "width" arguments/aesthetics # rphylopic 1.3.0 diff --git a/R/add_phylopic.r b/R/add_phylopic.r index 8964ff0c..d4f0fd78 100644 --- a/R/add_phylopic.r +++ b/R/add_phylopic.r @@ -14,9 +14,18 @@ #' ShareAlike clause. The user can also combine these filters as a vector. #' @param x \code{numeric}. x value of the silhouette center. #' @param y \code{numeric}. y value of the silhouette center. -#' @param ysize \code{numeric}. Height of the silhouette. The width is -#' determined by the aspect ratio of the original image. If "Inf", the -#' default, the height will be as tall as will fit within the plot area. +#' @param ysize `r lifecycle::badge("deprecated")` use the `height` or `width` +#' argument instead. +#' @param height \code{numeric}. Height of the silhouette in coordinate space. +#' If "NA" and `width` is specified, the `height is determined by the aspect +#' ratio of the original image. If "Inf", the default, and `width` is "NA", +#' the height will be as tall as will fit within the plot area. One or both of +#' `height` and `width` must be "NA". +#' @param width \code{numeric}. Width of the silhouette in coordinate space. If +#' "NA", the default, and `height` is specified, the width is determined by +#' the aspect ratio of the original image. If "Inf" and `height` is "NA", +#' the width will be as wide as will fit within the plot area. One or both of +#' `height` and `width` must be "NA". #' @param alpha \code{numeric}. A value between 0 and 1, specifying the opacity #' of the silhouette (0 is fully transparent, 1 is fully opaque). #' @param color \code{character}. Color of silhouette outline. If "original" or @@ -65,6 +74,7 @@ #' Note that png array objects can only be rotated by multiples of 90 degrees. #' Also, outline colors do not currently work for png array objects. #' @importFrom ggplot2 annotate +#' @importFrom lifecycle deprecated #' @export #' @examples \dontrun{ #' # Put a silhouette behind a plot based on a taxonomic name @@ -87,13 +97,13 @@ #' p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + #' geom_blank() + #' add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", -#' x = posx, y = posy, ysize = sizey, +#' x = posx, y = posy, height = sizey, #' fill = fills, alpha = alpha, angle = angle, #' horizontal = hor, vertical = ver) #' p + ggtitle("R Cat Herd!!") #' } add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, - x, y, ysize = Inf, + x, y, ysize = deprecated(), height = Inf, width = NA, alpha = 1, color = NA, fill = "black", horizontal = FALSE, vertical = FALSE, angle = 0, hjust = 0.5, vjust = 0.5, @@ -108,13 +118,20 @@ add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, stop("`verbose` should be a logical value.") } + if (lifecycle::is_present(ysize)) { + lifecycle::deprecate_warn("1.4.0", "add_phylopic(ysize)", + "add_phylopic(height)") + if (is.null(height)) height <- ysize + } + # Make all variables the same length x_len <- length(x) y_len <- length(y) max_len <- max(x_len, y_len) x <- rep_len(x, max_len) y <- rep_len(y, max_len) - ysize <- rep_len(ysize, max_len) + height <- rep_len(height, max_len) + width <- rep_len(width, max_len) alpha <- rep_len(alpha, max_len) color <- rep_len(color, max_len) fill <- rep_len(fill, max_len) @@ -126,7 +143,7 @@ add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, # Put together all of the variables args <- list(geom = GeomPhylopic, - x = x, y = y, size = ysize, + x = x, y = y, height = height, width = width, alpha = alpha, color = color, fill = fill, horizontal = horizontal, vertical = vertical, angle = angle, hjust = hjust, vjust = vjust, diff --git a/R/add_phylopic_base.r b/R/add_phylopic_base.r index 51143c24..e0d538bc 100644 --- a/R/add_phylopic_base.r +++ b/R/add_phylopic_base.r @@ -16,9 +16,18 @@ #' `ysize` are not specified. #' @param y \code{numeric}. y value of the silhouette center. Ignored if `x` and #' `ysize` are not specified. -#' @param ysize \code{numeric}. Height of the silhouette. The width is -#' determined by the aspect ratio of the original image. Ignored if `x` and -#' `y` are not specified. +#' @param ysize `r lifecycle::badge("deprecated")` use the `height` or `width` +#' argument instead. +#' @param height \code{numeric}. Height of the silhouette in coordinate space. +#' If "NULL" and `width` is specified, the `height is determined by the aspect +#' ratio of the original image. If "Inf", the default, and `width` is "NULL", +#' the height will be as tall as will fit within the plot area. One or both of +#' `height` and `width` must be "NULL". +#' @param width \code{numeric}. Width of the silhouette in coordinate space. If +#' "NULL", the default, and `height` is specified, the width is determined by +#' the aspect ratio of the original image. If "Inf" and `height` is "NA", the +#' width will be as wide as will fit within the plot area. One or both of +#' `height` and `width` must be "NULL". #' @param alpha \code{numeric}. A value between 0 and 1, specifying the opacity #' of the silhouette (0 is fully transparent, 1 is fully opaque). #' @param color \code{character}. Color of silhouette outline. If "original" or @@ -44,9 +53,9 @@ #' @param verbose \code{logical}. Should the attribution information for the #' used silhouette(s) be printed to the console (see [get_attribution()])? #' @details One (and only one) of `img`, `name`, or `uuid` must be specified. -#' Use parameters `x`, `y`, and `ysize` to place the silhouette at a specified -#' position on the plot. If all three of these parameters are unspecified, -#' then the silhouette will be plotted to the full height and width of the +#' Use parameters `x`, `y`, and `height`/`width` to place the silhouette at a +#' specified position on the plot. If all of these parameters are unspecified, +#' then the silhouette will be plotted to the full height and/or width of the #' plot. The aspect ratio of the silhouette will always be maintained (even #' when a plot is resized). However, if the plot is resized after plotting the #' silhouette, the absolute size and/or position of the silhouette may change. @@ -67,6 +76,7 @@ #' @importFrom grid grid.raster #' @importFrom grImport2 grid.picture #' @importFrom methods is slotNames +#' @importFrom lifecycle deprecated #' @export #' @examples \dontrun{ #' # single image @@ -86,7 +96,7 @@ #' #' plot(posx, posy, type = "n", main = "A cat herd") #' add_phylopic_base(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", -#' x = posx, y = posy, ysize = size, +#' x = posx, y = posy, height = size, #' fill = fills, angle = angle, #' horizontal = hor, vertical = ver) #' @@ -98,11 +108,12 @@ #' # plot background cat #' add_phylopic_base(img = cat, alpha = 0.2) #' # overlay smaller cats -#' add_phylopic_base(img = cat, x = posx, y = posy, ysize = size, alpha = 0.8) +#' add_phylopic_base(img = cat, x = posx, y = posy, height = size, alpha = 0.8) #' } add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, - x = NULL, y = NULL, ysize = NULL, + x = NULL, y = NULL, ysize = deprecated(), + height = NULL, width = NULL, alpha = 1, color = NA, fill = "black", horizontal = FALSE, vertical = FALSE, angle = 0, hjust = 0.5, vjust = 0.5, @@ -125,6 +136,14 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, if (!is.logical(verbose)) { stop("`verbose` should be a logical value.") } + if (lifecycle::is_present(ysize)) { + lifecycle::deprecate_warn("1.4.0", "add_phylopic_base(ysize)", + "add_phylopic_base(height)") + if (is.null(height)) height <- ysize + } + if (!is.null(height) & !is.null(width)) { + stop("At least one of `height` or `width` must be NULL.") + } if (!is.null(name)) { if (!is.character(name)) { @@ -189,14 +208,19 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, # set default position and size if need be if (is.null(x)) x <- mean(usr_x) if (is.null(y)) y <- mean(usr_y) - if (is.null(ysize)) ysize <- abs(diff(usr_y)) + if (is.null(height) & is.null(width)) height <- abs(diff(usr_y)) - # convert x, y, and ysize to normalized device coordinates + # convert x, y, and height to normalized device coordinates x <- grconvertX(x, to = "ndc") y <- grconvertY(y, to = "ndc") - ysize <- grconvertY(ysize, to = "ndc") - grconvertY(0, to = "ndc") - - invisible(mapply(function(img, x, y, ysize, alpha, color, fill, + if (!is.null(height)) { + height <- grconvertY(height, to = "ndc") - grconvertY(0, to = "ndc") + width <- NA + } else { + width <- grconvertX(width, to = "ndc") - grconvertX(0, to = "ndc") + height <- NA + } + invisible(mapply(function(img, x, y, height, width, alpha, color, fill, horizontal, vertical, angle, hjust, vjust) { if (is.null(img)) return(NULL) @@ -220,19 +244,34 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, all(is.finite(img@summary@xscale)) && diff(img@summary@xscale) != 0 && is.numeric(img@summary@yscale) && length(img@summary@yscale) == 2 && all(is.finite(img@summary@yscale)) && diff(img@summary@yscale) != 0) { - xsize <- grconvertX( - grconvertY(ysize, from = "ndc", to = "inches") * aspect_ratio(img), - from = "inches", to = "ndc") - grid.picture(img, x = x, y = y, height = ysize, width = xsize, + # placeholder until pictureGrob supports a NULL height/width + if (is.na(width)) { + width <- grconvertX( + grconvertY(height, from = "ndc", to = "inches") * aspect_ratio(img), + from = "inches", to = "ndc") + } + if (is.na(height)) { + height <- grconvertY( + grconvertX(width, from = "ndc", to = "inches") / aspect_ratio(img), + from = "inches", to = "ndc") + } + grid.picture(img, x = x, y = y, height = height, width = width, expansion = 0, just = c(hjust, vjust)) } else { return(NULL) } } else { # png - grid.raster(img, x = x, y = y, height = ysize, just = c(hjust, vjust)) + if (is.na(width)) { + grid.raster(img, x = x, y = y, height = height, just = c(hjust, vjust)) + } + if (is.na(height)) { + grid.raster(img, x = x, y = y, width = width, just = c(hjust, vjust)) + } + } }, - img = imgs, x = x, y = y, ysize = ysize, alpha = alpha, color = color, - fill = fill, horizontal = horizontal, vertical = vertical, angle = angle, + img = imgs, x = x, y = y, + height = height, width = width, alpha = alpha, color = color, fill = fill, + horizontal = horizontal, vertical = vertical, angle = angle, hjust = hjust, vjust = vjust)) } diff --git a/R/add_phylopic_legend.R b/R/add_phylopic_legend.R index 46c55047..f1cfef24 100644 --- a/R/add_phylopic_legend.R +++ b/R/add_phylopic_legend.R @@ -10,7 +10,9 @@ #' legend. Can be `NULL` (default) if using keywords in `x`. #' @param legend \code{character}. A character vector of the labels to appear #' in the legend. -#' @param ysize \code{numeric}. Height of the legend silhouette(s). The width +#' @param ysize `r lifecycle::badge("deprecated")` use the `height` +#' argument instead. +#' @param height \code{numeric}. Height of the legend silhouette(s). The width #' is determined by the aspect ratio of the original image. #' @inheritParams add_phylopic_base #' @param ... Additional arguments passed to [legend()]. @@ -35,16 +37,22 @@ #' # Add data points #' add_phylopic_base(uuid = uuids, #' color = "black", fill = c("blue", "green"), -#' x = c(2.5, 7.5), y = c(2.5, 7.5), ysize = 2) +#' x = c(2.5, 7.5), y = c(2.5, 7.5), height = 2) #' # Add legend #' add_phylopic_legend(uuid = uuids, -#' ysize = 0.5, color = "black", fill = c("blue", "green"), +#' height = 0.5, color = "black", fill = c("blue", "green"), #' x = "bottomright", legend = c("Wolf 1", "Wolf 2"), #' bg = "lightgrey") add_phylopic_legend <- function(x, y = NULL, legend, img = NULL, name = NULL, uuid = NULL, - ysize = NULL, color = NA, fill = "black", + ysize = deprecated(), height = NULL, + color = NA, fill = "black", ...) { + if (lifecycle::is_present(ysize)) { + lifecycle::deprecate_warn("1.4.0", "add_phylopic_legend(ysize)", + "add_phylopic_legend(height)") + if (is.null(height)) height <- ysize + } # Get supplied arguments args <- list(x = x, y = y, legend = legend, ...) # Remove legend object to avoid issues with do.call @@ -67,9 +75,9 @@ add_phylopic_legend <- function(x, y = NULL, legend, if (!is.null(bg)) fill <- bg # size values size <- args[["pt.cex"]] - if (!is.null(size)) ysize <- size + if (!is.null(size)) height <- size # Set default ysize if required - if (is.null(ysize)) ysize <- (abs(diff(leg_pos$text$y)) * 0.5) + if (is.null(height)) height <- (abs(diff(leg_pos$text$y)) * 0.5) # Extract positions # Adjust x position slightly to account for width x <- (leg_pos$text$x + leg_pos$rect$left) / 2 @@ -80,5 +88,5 @@ add_phylopic_legend <- function(x, y = NULL, legend, y = y, color = color, fill = fill, - ysize = ysize) + height = height) } diff --git a/R/geom_phylopic.R b/R/geom_phylopic.R index 1b8cae82..dd369796 100644 --- a/R/geom_phylopic.R +++ b/R/geom_phylopic.R @@ -10,9 +10,12 @@ phylopic_env <- new.env() #' be specified. The `img` aesthetic can be #' [Picture][grImport2::Picture-class] objects or png array objects, e.g., #' from using [get_phylopic()]. Use the `x` and `y` aesthetics to place the -#' silhouettes at specified positions on the plot. The `size` aesthetic -#' specifies the height of the silhouettes in the units of the y axis. The -#' aspect ratio of the silhouettes will always be maintained. +#' silhouettes at specified positions on the plot. The `height` or `width` +#' aesthetic specifies the height or width, respectively, of the silhouettes +#' in the units of the y axis (only one is allowed). The aspect ratio of the +#' silhouettes will always be maintained. The `hjust` and `vjust` aesthetics +#' can be used to manage the justification of the silhouettes with respect the +#' `x` and `y` coordinates. #' #' The `color` (default: NA), `fill` (default: "black"), and `alpha` ( #' default: 1) aesthetics can be used to change the outline color, fill color, @@ -39,9 +42,11 @@ phylopic_env <- new.env() #' #' - **x** (required) #' - **y** (required) -#' - **img/uuid/name** (one, and only one, required) -#' - size -#' - color/colour +#' - **img** *or* **uuid** *or* **name** (one, and only one, required) +#' - height *or* width (optional, maximum of only one allowed) +#' - ysize `r lifecycle::badge("deprecated")` Deprecated in favor of height or +#' width +#' - color *or* colour #' - fill #' - alpha #' - horizontal @@ -76,7 +81,7 @@ phylopic_env <- new.env() #' name = c("Felis silvestris catus", "Odobenus rosmarus")) #' ggplot(df) + #' geom_phylopic(aes(x = x, y = y, name = name), -#' fill = "purple", size = 10) + +#' fill = "purple", height = 10) + #' facet_wrap(~name) + #' coord_cartesian(xlim = c(1,6), ylim = c(5, 30)) #' } @@ -100,6 +105,16 @@ geom_phylopic <- function(mapping = NULL, data = NULL, if ("img" %in% names(dots) && !is.list(dots$img)) { dots$img <- list(dots$img) } + if (!is.null(dots$size)) { + lifecycle::deprecate_warn("1.4.0", + I("Using the `size` aesthetic in this geom"), + I("the `height` and `width` aesthetics"), + user_env = globalenv()) + if (is.null(dots$height)) { + dots$height <- dots$size + dots$size <- NULL + } + } layer( data = data, mapping = mapping, @@ -122,11 +137,14 @@ geom_phylopic <- function(mapping = NULL, data = NULL, #' @importFrom grid gTree gList nullGrob GeomPhylopic <- ggproto("GeomPhylopic", Geom, required_aes = c("x", "y"), - non_missing_aes = c("size", "alpha", "color", "fill", + non_missing_aes = c("alpha", "color", "fill", "horizontal", "vertical", "angle", "hjust", "vjust"), - optional_aes = c("img", "name", "uuid"), # one and only one of these - default_aes = aes(size = 6, alpha = 1, color = NA, fill = "black", + optional_aes = c("height", "width", "img", "name", "uuid"), + # one and only one of img/name/uuid + # size is deprecated + default_aes = aes(height = 6, width = NA, + alpha = 1, color = NA, fill = "black", horizontal = FALSE, vertical = FALSE, angle = 0, hjust = 0.5, vjust = 0.5), extra_params = c("na.rm", "remove_background", "verbose", "filter"), @@ -209,6 +227,18 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, data }, use_defaults = function(self, data, params = list(), modifiers = aes()) { + default_aes <- self$default_aes + # Inherit size as height if no height aesthetic and param exist + if (!is.null(data$size)) { + lifecycle::deprecate_warn("1.4.0", + I("Using the `size` aesthetic in this geom"), + I("the `height` and `width` aesthetics"), + user_env = globalenv()) + if (is.null(data$height) && is.null(params$height)) { + data$height <- data$size + data$size <- NULL + } + } # if fill isn't specified in the original data, copy over the colour column col_fill <- c("colour", "fill") %in% colnames(data) | c("colour", "fill") %in% names(params) @@ -235,37 +265,76 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, if (any(data$vjust > 1 | data$vjust < 0)) { stop("`vjust` must be between 0 and 1.") } + if (!is.null(data$size)) { + lifecycle::deprecate_warn("1.4.0", + I("Using the `size` aesthetic in this geom"), + I("the `height` and `width` aesthetics"), + user_env = globalenv()) + if (is.null(data$height) && is.null(params$height)) { + data$height <- data$size + data$size <- NULL + } + } + if (any(!is.na(data$height) & !is.na(data$width))) { + stop("At least one of `height` or `width` must be NA.") + } # Transform data data <- coord$transform(data, panel_params) - # Calculate height as percentage of y limits - # (or r limits for polar coordinates) - if ("y.range" %in% names(panel_params)) { - y_diff <- diff(panel_params$y.range) - } else if ("y_range" %in% names(panel_params)) { # exclusive to coord_sf - y_diff <- diff(panel_params$y_range) - } else if ("r.range" %in% names(panel_params)) { # exclusive to coord_polar - y_diff <- diff(panel_params$r.range) + if (all(is.na(data$width))) { + # Calculate height as percentage of y limits + # (or r limits for polar coordinates) + if ("y.range" %in% names(panel_params)) { + y_diff <- diff(panel_params$y.range) + } else if ("y_range" %in% names(panel_params)) { # exclusive to coord_sf + y_diff <- diff(panel_params$y_range) + } else if ("r.range" %in% names(panel_params)) { # exclusive to coord_polar + y_diff <- diff(panel_params$r.range) + } else { + y_diff <- 1 + } + if (any(data$height < (y_diff / 1000))) { + warning(paste("Your specified silhouette `height`(s) are more than 1000", + "times smaller than your y-axis range. You probably want", + "to use a larger `height`."), call. = FALSE) + } + heights <- data$height / y_diff + + # Hack to make silhouettes the full height of the plot + heights[is.infinite(heights)] <- 1 + widths <- data$width } else { - y_diff <- 1 - } - if (any(data$size < (y_diff / 1000))) { - warning(paste("Your specified silhouette `size`(s) are more than 1000", - "times smaller than your y-axis range. You probably want", - "to use a larger `size`."), call. = FALSE) + # Calculate width as percentage of x limits + # (or r limits for polar coordinates) + if ("x.range" %in% names(panel_params)) { + x_diff <- diff(panel_params$x.range) + } else if ("x_range" %in% names(panel_params)) { # exclusive to coord_sf + x_diff <- diff(panel_params$x_range) + } else if ("r.range" %in% names(panel_params)) { # exclusive to coord_polar + x_diff <- diff(panel_params$r.range) + } else { + x_diff <- 1 + } + if (any(data$width < (x_diff / 1000))) { + warning(paste("Your specified silhouette `width`(s) are more than 1000", + "times smaller than your x-axis range. You probably want", + "to use a larger `width`."), call. = FALSE) + } + widths <- data$width / x_diff + + # Hack to make silhouettes the full height of the plot + widths[is.infinite(widths)] <- 1 + heights <- data$height } - heights <- data$size / y_diff - - # Hack to make silhouettes the full height of the plot - heights[is.infinite(heights)] <- 1 + # Make a grob for each silhouette grobs <- lapply(seq_len(nrow(data)), function(i) { if (is.null(data$img[[i]])) { nullGrob() } else { - phylopicGrob(data$img[[i]], data$x[i], data$y[i], heights[i], + phylopicGrob(data$img[[i]], data$x[i], data$y[i], heights[i], widths[i], data$colour[i], data$fill[i], data$alpha[i], data$horizontal[i], data$vertical[i], data$angle[i], data$hjust[i], data$vjust[i], @@ -372,7 +441,8 @@ phylopic_key_glyph <- function(img = NULL, name = NULL, uuid = NULL) { asp_rat <- aspect_ratio(imgs[[i]]) height <- unit(ifelse(asp_rat >= 1, .95 / asp_rat, .95), "npc") grob <- phylopicGrob(imgs[[i]], x = 0.5, y = 0.5, - height, data$colour[1], data$fill[1], data$alpha[1], + height, width = unit(1, "npc"), + data$colour[1], data$fill[1], data$alpha[1], data$horizontal[1], data$vertical[1], data$angle[1], hjust = 0.5, vjust = 0.5, phylopic_env$remove_background) @@ -389,7 +459,8 @@ phylopic_key_glyph <- function(img = NULL, name = NULL, uuid = NULL) { #' @importFrom grImport2 pictureGrob #' @importFrom grid rasterGrob gList gTree nullGrob #' @importFrom methods slotNames -phylopicGrob <- function(img, x, y, height, color, fill, alpha, +phylopicGrob <- function(img, x, y, height, width, + color, fill, alpha, horizontal, vertical, angle, hjust, vjust, remove_background) { @@ -411,10 +482,13 @@ phylopicGrob <- function(img, x, y, height, color, fill, alpha, all(is.finite(img@summary@xscale)) && diff(img@summary@xscale) != 0 && is.numeric(img@summary@yscale) && length(img@summary@yscale) == 2 && all(is.finite(img@summary@yscale)) && diff(img@summary@yscale) != 0) { + # placeholder until pictureGrob supports a NULL height/width + if (is.na(height)) height <- width / aspect_ratio(img) + if (is.na(width)) width <- height * aspect_ratio(img) # modified from # https://github.com/k-hench/hypoimg/blob/master/R/hypoimg_recolor_svg.R - img_grob <- pictureGrob(img, x = x, y = y, height = height, - width = height * aspect_ratio(img), + img_grob <- pictureGrob(img, x = x, y = y, + height = height, width = width, default.units = "native", expansion = 0, just = c(hjust, vjust)) img_grob <- gList(img_grob) @@ -423,9 +497,18 @@ phylopicGrob <- function(img, x, y, height, color, fill, alpha, img_grob <- nullGrob() } } else { # png - img_grob <- rasterGrob(img, x = x, y = y, height = height, - default.units = "native", - just = c(hjust, vjust)) + if (is.na(height)) { + img_grob <- rasterGrob(img, x = x, y = y, + height = NULL, width = width, + default.units = "native", + just = c(hjust, vjust)) + } + if (is.na(width)) { + img_grob <- rasterGrob(img, x = x, y = y, + height = height, width = NULL, + default.units = "native", + just = c(hjust, vjust)) + } } return(img_grob) } diff --git a/R/pick_phylopic.R b/R/pick_phylopic.R index 889c7119..1714ab66 100644 --- a/R/pick_phylopic.R +++ b/R/pick_phylopic.R @@ -151,7 +151,7 @@ pick_phylopic <- function(name = NULL, n = 5, uuid = NULL, view = 1, # Plot silhouettes p <- ggplot(data = df) + geom_phylopic(aes(x = x, y = y, img = img), - size = df$size, + height = df$size, color = "original") + facet_wrap(~label) + coord_equal(xlim = c(0, 1), ylim = c(0, 1)) + diff --git a/README.md b/README.md index 763c59ce..5d463324 100644 --- a/README.md +++ b/README.md @@ -59,17 +59,17 @@ img <- pick_phylopic(name = "Canis lupus", n = 5) ```r # OK, now we've got the image we want... let's add it to a plot! plot(x = 1, y = 1, type = "n") -add_phylopic_base(img = img, x = 1.25, y = 1.25, ysize = 0.25) +add_phylopic_base(img = img, x = 1.25, y = 1.25, height = 0.25) # But can't we just add an image straight away using the uuid? Sure! uuid <- get_uuid(name = "Canis lupus", n = 1) -add_phylopic_base(uuid = uuid, x = 1, y = 1, ysize = 0.25) +add_phylopic_base(uuid = uuid, x = 1, y = 1, height = 0.25) # What about just using the first image linked to the name? Definitely! -add_phylopic_base(name = "Canis lupus", x = 0.75, y = 0.75, ysize = 0.25) +add_phylopic_base(name = "Canis lupus", x = 0.75, y = 0.75, height = 0.25) # Black is a bit boring? OK... -add_phylopic_base(name = "Canis lupus", x = 0.75, y = 1.25, ysize = 0.25, color = "orange") +add_phylopic_base(name = "Canis lupus", x = 0.75, y = 1.25, height = 0.25, color = "orange") ``` ### ggplot2 @@ -89,7 +89,7 @@ ggplot(iris) + # Plot silhouettes as points! ggplot(iris) + geom_phylopic(aes(x = Sepal.Length, y = Sepal.Width), img = img, - color = "purple", size = 0.25) + color = "purple", height = 0.25) ``` ## Get attribution diff --git a/man/add_phylopic.Rd b/man/add_phylopic.Rd index d6713a2f..2f095a11 100644 --- a/man/add_phylopic.Rd +++ b/man/add_phylopic.Rd @@ -11,7 +11,9 @@ add_phylopic( filter = NULL, x, y, - ysize = Inf, + ysize = deprecated(), + height = Inf, + width = NA, alpha = 1, color = NA, fill = "black", @@ -42,9 +44,17 @@ ShareAlike clause. The user can also combine these filters as a vector.} \item{y}{\code{numeric}. y value of the silhouette center.} -\item{ysize}{\code{numeric}. Height of the silhouette. The width is -determined by the aspect ratio of the original image. If "Inf", the -default, the height will be as tall as will fit within the plot area.} +\item{ysize}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} use the \code{height} or \code{width} +argument instead.} + +\item{height}{\code{numeric}. Height of the silhouette in coordinate space. +If "NA" and \code{width} is specified, the \verb{height is determined by the aspect ratio of the original image. If "Inf", the default, and }width\verb{is "NA", the height will be as tall as will fit within the plot area. One or both of}height\code{and}width` must be "NA".} + +\item{width}{\code{numeric}. Width of the silhouette in coordinate space. If +"NA", the default, and \code{height} is specified, the width is determined by +the aspect ratio of the original image. If "Inf" and \code{height} is "NA", +the width will be as wide as will fit within the plot area. One or both of +\code{height} and \code{width} must be "NA".} \item{alpha}{\code{numeric}. A value between 0 and 1, specifying the opacity of the silhouette (0 is fully transparent, 1 is fully opaque).} @@ -131,7 +141,7 @@ alpha <- runif(10, 0.3, 1) p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + geom_blank() + add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", - x = posx, y = posy, ysize = sizey, + x = posx, y = posy, height = sizey, fill = fills, alpha = alpha, angle = angle, horizontal = hor, vertical = ver) p + ggtitle("R Cat Herd!!") diff --git a/man/add_phylopic_base.Rd b/man/add_phylopic_base.Rd index 2f4ab8b6..fb8c4ef1 100644 --- a/man/add_phylopic_base.Rd +++ b/man/add_phylopic_base.Rd @@ -11,7 +11,9 @@ add_phylopic_base( filter = NULL, x = NULL, y = NULL, - ysize = NULL, + ysize = deprecated(), + height = NULL, + width = NULL, alpha = 1, color = NA, fill = "black", @@ -44,9 +46,17 @@ ShareAlike clause. The user can also combine these filters as a vector.} \item{y}{\code{numeric}. y value of the silhouette center. Ignored if \code{x} and \code{ysize} are not specified.} -\item{ysize}{\code{numeric}. Height of the silhouette. The width is -determined by the aspect ratio of the original image. Ignored if \code{x} and -\code{y} are not specified.} +\item{ysize}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} use the \code{height} or \code{width} +argument instead.} + +\item{height}{\code{numeric}. Height of the silhouette in coordinate space. +If "NULL" and \code{width} is specified, the \verb{height is determined by the aspect ratio of the original image. If "Inf", the default, and }width\verb{is "NULL", the height will be as tall as will fit within the plot area. One or both of}height\code{and}width` must be "NULL".} + +\item{width}{\code{numeric}. Width of the silhouette in coordinate space. If +"NULL", the default, and \code{height} is specified, the width is determined by +the aspect ratio of the original image. If "Inf" and \code{height} is "NA", the +width will be as wide as will fit within the plot area. One or both of +\code{height} and \code{width} must be "NULL".} \item{alpha}{\code{numeric}. A value between 0 and 1, specifying the opacity of the silhouette (0 is fully transparent, 1 is fully opaque).} @@ -88,9 +98,9 @@ silhouettes on top of an existing base R plot (like \code{\link[=points]{points( } \details{ One (and only one) of \code{img}, \code{name}, or \code{uuid} must be specified. -Use parameters \code{x}, \code{y}, and \code{ysize} to place the silhouette at a specified -position on the plot. If all three of these parameters are unspecified, -then the silhouette will be plotted to the full height and width of the +Use parameters \code{x}, \code{y}, and \code{height}/\code{width} to place the silhouette at a +specified position on the plot. If all of these parameters are unspecified, +then the silhouette will be plotted to the full height and/or width of the plot. The aspect ratio of the silhouette will always be maintained (even when a plot is resized). However, if the plot is resized after plotting the silhouette, the absolute size and/or position of the silhouette may change. @@ -127,7 +137,7 @@ fills <- sample(c("black", "darkorange", "grey42", "white"), 10, plot(posx, posy, type = "n", main = "A cat herd") add_phylopic_base(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", - x = posx, y = posy, ysize = size, + x = posx, y = posy, height = size, fill = fills, angle = angle, horizontal = hor, vertical = ver) @@ -139,6 +149,6 @@ plot(posx, posy, type = "n", main = "A cat herd, on top of a cat", # plot background cat add_phylopic_base(img = cat, alpha = 0.2) # overlay smaller cats -add_phylopic_base(img = cat, x = posx, y = posy, ysize = size, alpha = 0.8) +add_phylopic_base(img = cat, x = posx, y = posy, height = size, alpha = 0.8) } } diff --git a/man/add_phylopic_legend.Rd b/man/add_phylopic_legend.Rd index 998e76fe..9c68a6af 100644 --- a/man/add_phylopic_legend.Rd +++ b/man/add_phylopic_legend.Rd @@ -11,7 +11,8 @@ add_phylopic_legend( img = NULL, name = NULL, uuid = NULL, - ysize = NULL, + ysize = deprecated(), + height = NULL, color = NA, fill = "black", ... @@ -36,7 +37,10 @@ from using \code{\link[=get_phylopic]{get_phylopic()}}.} \item{uuid}{\code{character}. A valid uuid for a PhyloPic silhouette (such as that returned by \code{\link[=get_uuid]{get_uuid()}} or \code{\link[=pick_phylopic]{pick_phylopic()}}).} -\item{ysize}{\code{numeric}. Height of the legend silhouette(s). The width +\item{ysize}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} use the \code{height} +argument instead.} + +\item{height}{\code{numeric}. Height of the legend silhouette(s). The width is determined by the aspect ratio of the original image.} \item{color}{\code{character}. Color of silhouette outline. If "original" or @@ -76,10 +80,10 @@ plot(0:10, 0:10, type = "n", main = "Wolves") # Add data points add_phylopic_base(uuid = uuids, color = "black", fill = c("blue", "green"), - x = c(2.5, 7.5), y = c(2.5, 7.5), ysize = 2) + x = c(2.5, 7.5), y = c(2.5, 7.5), height = 2) # Add legend add_phylopic_legend(uuid = uuids, - ysize = 0.5, color = "black", fill = c("blue", "green"), + height = 0.5, color = "black", fill = c("blue", "green"), x = "bottomright", legend = c("Wolf 1", "Wolf 2"), bg = "lightgrey") } diff --git a/man/geom_phylopic.Rd b/man/geom_phylopic.Rd index d9d64d00..bea59c98 100644 --- a/man/geom_phylopic.Rd +++ b/man/geom_phylopic.Rd @@ -89,9 +89,12 @@ One (and only one) of the \code{img}, \code{name}, or \code{uuid} aesthetics mus be specified. The \code{img} aesthetic can be \link[grImport2:Picture-class]{Picture} objects or png array objects, e.g., from using \code{\link[=get_phylopic]{get_phylopic()}}. Use the \code{x} and \code{y} aesthetics to place the -silhouettes at specified positions on the plot. The \code{size} aesthetic -specifies the height of the silhouettes in the units of the y axis. The -aspect ratio of the silhouettes will always be maintained. +silhouettes at specified positions on the plot. The \code{height} or \code{width} +aesthetic specifies the height or width, respectively, of the silhouettes +in the units of the y axis (only one is allowed). The aspect ratio of the +silhouettes will always be maintained. The \code{hjust} and \code{vjust} aesthetics +can be used to manage the justification of the silhouettes with respect the +\code{x} and \code{y} coordinates. The \code{color} (default: NA), \code{fill} (default: "black"), and \code{alpha} ( default: 1) aesthetics can be used to change the outline color, fill color, @@ -119,9 +122,11 @@ Also, outline colors do not currently work for png array objects. \itemize{ \item \strong{x} (required) \item \strong{y} (required) -\item \strong{img/uuid/name} (one, and only one, required) -\item size -\item color/colour +\item \strong{img} \emph{or} \strong{uuid} \emph{or} \strong{name} (one, and only one, required) +\item height \emph{or} width (optional, maximum of only one allowed) +\item ysize \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} Deprecated in favor of height or +width +\item color \emph{or} colour \item fill \item alpha \item horizontal @@ -141,7 +146,7 @@ df <- data.frame(x = c(2, 4), y = c(10, 20), name = c("Felis silvestris catus", "Odobenus rosmarus")) ggplot(df) + geom_phylopic(aes(x = x, y = y, name = name), - fill = "purple", size = 10) + + fill = "purple", height = 10) + facet_wrap(~name) + coord_cartesian(xlim = c(1,6), ylim = c(5, 30)) } diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg index 62469642..77fa7570 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg @@ -21,34 +21,34 @@ - - + + - - + + - - + + - - - + + + - + - - + + - - - + + + - + @@ -58,41 +58,41 @@ - - - - -2 -4 -6 -x + + + + +2 +4 +6 +x y - -name + +name - - + + - - - + + + - - + + - - - + + + -Felis silvestris catus -Odobenus rosmarus +Felis silvestris catus +Odobenus rosmarus phylopic_key_glyph with img diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg index 3442b141..a42997d3 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg @@ -21,34 +21,34 @@ - - + + - - + + - - + + - - - + + + - + - - + + - - - + + + - + @@ -58,41 +58,41 @@ - - - - -2 -4 -6 -x + + + + +2 +4 +6 +x y - -name + +name - - + + - - - + + + - - + + - - - + + + -Felis silvestris catus -Odobenus rosmarus +Felis silvestris catus +Odobenus rosmarus phylopic_key_glyph with uuid diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg index 1e64fdca..fe2666c3 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg @@ -21,34 +21,34 @@ - - + + - - + + - - + + - - - + + + - + - - + + - - - + + + - + @@ -58,41 +58,41 @@ - - - - -2 -4 -6 -x + + + + +2 +4 +6 +x y - -name + +name - - + + - - - + + + - - + + - - - + + + -Felis silvestris catus -Odobenus rosmarus +Felis silvestris catus +Odobenus rosmarus phylopic_key_glyph diff --git a/tests/testthat/test-add_phylopic.R b/tests/testthat/test-add_phylopic.R index 79da2c66..ab101053 100644 --- a/tests/testthat/test-add_phylopic.R +++ b/tests/testthat/test-add_phylopic.R @@ -35,7 +35,7 @@ test_that("add_phylopic works", { p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + geom_blank() + add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", - x = posx, y = posy, ysize = sizey, + x = posx, y = posy, height = sizey, fill = fills, color = cols, alpha = alpha, angle = angle, horizontal = hor, vertical = ver) p <- p + ggtitle("R Cat Herd!!") diff --git a/tests/testthat/test-add_phylopic_base.R b/tests/testthat/test-add_phylopic_base.R index a5d47a0e..8293f179 100644 --- a/tests/testthat/test-add_phylopic_base.R +++ b/tests/testthat/test-add_phylopic_base.R @@ -4,7 +4,7 @@ test_that("add_phylopic_base works", { # phylopic in background, with name expect_doppelganger("phylopic in background", function() { plot(1, 1, type = "n", main = "A cat") - add_phylopic_base(name = "Felis silvestris catus", ysize = .7, + add_phylopic_base(name = "Felis silvestris catus", height = .7, verbose = TRUE) }) @@ -13,7 +13,7 @@ test_that("add_phylopic_base works", { cat_png <- get_phylopic("23cd6aa4-9587-4a2e-8e26-de42885004c9", format = "raster") plot(1, 1, type = "n", main = "A cat") - add_phylopic_base(cat_png, x = 1, y = 1, ysize = .4, fill = "blue", + add_phylopic_base(cat_png, x = 1, y = 1, height = .4, fill = "blue", alpha = .5, angle = -90, horizontal = TRUE) }) @@ -33,7 +33,7 @@ test_that("add_phylopic_base works", { expect_doppelganger("phylopics on top of plot", function() { plot(posx, posy, type = "n", main = "A cat herd") add_phylopic_base(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", - x = posx, y = posy, ysize = sizey, + x = posx, y = posy, height = sizey, fill = fills, color = cols, alpha = alpha, angle = angle, horizontal = hor, vertical = ver) diff --git a/tests/testthat/test-add_phylopic_legend.R b/tests/testthat/test-add_phylopic_legend.R index b66fde52..02143f8a 100644 --- a/tests/testthat/test-add_phylopic_legend.R +++ b/tests/testthat/test-add_phylopic_legend.R @@ -10,9 +10,9 @@ test_that("add_phylopic_legend works", { plot(0:10, 0:10, type = "n", main = "Wolves") add_phylopic_base(uuid = uuids, color = "black", fill = c("blue", "green"), - x = c(2.5, 7.5), y = c(2.5, 7.5), ysize = 2) + x = c(2.5, 7.5), y = c(2.5, 7.5), height = 2) add_phylopic_legend(uuid = uuids, - ysize = 0.25, color = "black", + height = 0.25, color = "black", fill = c("blue", "green"), x = "bottomright", legend = c("Wolf 1", "Wolf 2"), bg = "lightgrey") @@ -23,7 +23,7 @@ test_that("add_phylopic_legend works", { plot(0:10, 0:10, type = "n", main = "Wolves") add_phylopic_base(uuid = uuids, color = "black", fill = c("blue", "green"), - x = c(2.5, 7.5), y = c(2.5, 7.5), ysize = 2) + x = c(2.5, 7.5), y = c(2.5, 7.5), height = 2) add_phylopic_legend(uuid = uuids, x = "bottomright", legend = c("Wolf 1", "Wolf 2"), col = "black", pt.bg = c("blue", "green"), @@ -35,7 +35,7 @@ test_that("add_phylopic_legend works", { plot(0:10, 0:10, type = "n", main = "Wolves") add_phylopic_base(uuid = uuids, color = "black", fill = c("blue", "green"), - x = c(2.5, 7.5), y = c(2.5, 7.5), ysize = 2) + x = c(2.5, 7.5), y = c(2.5, 7.5), height = 2) add_phylopic_legend(uuid = uuids, x = "bottomright", legend = c("Wolf 1", "Wolf 2"), col = "black", pt.bg = c("blue", "green")) diff --git a/tests/testthat/test-geom_phylopic.R b/tests/testthat/test-geom_phylopic.R index 152794d6..c11f9342 100644 --- a/tests/testthat/test-geom_phylopic.R +++ b/tests/testthat/test-geom_phylopic.R @@ -10,7 +10,7 @@ test_that("geom_phylopic works", { "c8f71c27-71db-4b34-ac2d-e97fea8762cf", "0a8ab4f9-04c9-4485-b21a-df683d506055")) gg <- ggplot(df) + - geom_phylopic(aes(x = x, y = y, uuid = uuid), color = "purple", size = 10, + geom_phylopic(aes(x = x, y = y, uuid = uuid), color = "purple", height = 10, horizontal = TRUE, angle = 45) + facet_wrap(~uuid) + coord_cartesian(xlim = c(1, 6), ylim = c(5, 30)) + @@ -23,7 +23,7 @@ test_that("geom_phylopic works", { format = "raster") gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y), img = list(cat_png), - fill = "purple", size = 10) + + fill = "purple", height = 10) + coord_cartesian(xlim = c(1, 6), ylim = c(5, 30)) + theme_classic(base_size = 16) expect_doppelganger("geom_phylopic with png", gg) @@ -55,7 +55,7 @@ test_that("geom_phylopic works", { geom_phylopic(aes(x = x, y = y), uuid = "asdfghjkl") expect_warning(plot(gg)) gg <- ggplot(df) + - geom_phylopic(aes(x = x, y = y, uuid = uuid), size = 1E-6) + geom_phylopic(aes(x = x, y = y, uuid = uuid), height = 1E-6) expect_warning(plot(gg)) }) @@ -66,7 +66,7 @@ test_that("phylopic_key_glyph works", { df <- data.frame(x = c(2, 4), y = c(10, 20), name = c("Felis silvestris catus", "Odobenus rosmarus")) gg <- ggplot(df) + - geom_phylopic(aes(x = x, y = y, name = name, color = name), size = 10, + geom_phylopic(aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(name = df$name)) + coord_cartesian(xlim = c(1, 6), ylim = c(5, 30)) + @@ -78,7 +78,7 @@ test_that("phylopic_key_glyph works", { gg <- ggplot(df) + geom_phylopic( - aes(x = x, y = y, name = name, color = name), size = 10, + aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(uuid = c("23cd6aa4-9587-4a2e-8e26-de42885004c9", @@ -90,7 +90,7 @@ test_that("phylopic_key_glyph works", { cat <- get_phylopic("23cd6aa4-9587-4a2e-8e26-de42885004c9") gg <- ggplot(df) + - geom_phylopic(aes(x = x, y = y, name = name, color = name), size = 10, + geom_phylopic(aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(img = cat)) + coord_cartesian(xlim = c(1, 6), ylim = c(5, 30)) + @@ -100,7 +100,7 @@ test_that("phylopic_key_glyph works", { # errors/warnings expect_error(ggplot(df) + geom_phylopic( - aes(x = x, y = y, name = name, color = name), size = 10, + aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph( @@ -112,7 +112,7 @@ test_that("phylopic_key_glyph works", { theme_classic(base_size = 16)) expect_error(ggplot(df) + geom_phylopic( - aes(x = x, y = y, name = name, color = name), size = 10, + aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(name = 12345) @@ -121,7 +121,7 @@ test_that("phylopic_key_glyph works", { theme_classic(base_size = 16)) expect_warning(ggplot(df) + geom_phylopic( - aes(x = x, y = y, name = name, color = name), size = 10, + aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(name = "12345") @@ -130,7 +130,7 @@ test_that("phylopic_key_glyph works", { theme_classic(base_size = 16)) expect_error(ggplot(df) + geom_phylopic( - aes(x = x, y = y, name = name, color = name), size = 10, + aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(uuid = 12345) @@ -139,7 +139,7 @@ test_that("phylopic_key_glyph works", { theme_classic(base_size = 16)) expect_warning(ggplot(df) + geom_phylopic( - aes(x = x, y = y, name = name, color = name), size = 10, + aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(uuid = "12345") @@ -148,7 +148,7 @@ test_that("phylopic_key_glyph works", { theme_classic(base_size = 16)) expect_error(ggplot(df) + geom_phylopic( - aes(x = x, y = y, name = name, color = name), size = 10, + aes(x = x, y = y, name = name, color = name), height = 10, show.legend = TRUE, verbose = TRUE, key_glyph = phylopic_key_glyph(img = 12345) From bf2a9e86815deb3be42c823653a36dbc17f682c3 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Mon, 29 Jul 2024 17:23:55 -0400 Subject: [PATCH 05/21] Update add_phylopic_base for new grImport2 changes --- R/add_phylopic_base.r | 78 ++++++++++++++++++++-------------------- man/add_phylopic_base.Rd | 25 +++++++------ 2 files changed, 55 insertions(+), 48 deletions(-) diff --git a/R/add_phylopic_base.r b/R/add_phylopic_base.r index e0d538bc..71509f98 100644 --- a/R/add_phylopic_base.r +++ b/R/add_phylopic_base.r @@ -13,21 +13,23 @@ #' for images which allows commercial usage, and "sa" for images without a #' ShareAlike clause. The user can also combine these filters as a vector. #' @param x \code{numeric}. x value of the silhouette center. Ignored if `y` and -#' `ysize` are not specified. +#' `ysize` are not specified. If "NULL", the default, the mean value of the +#' x-axis is used. #' @param y \code{numeric}. y value of the silhouette center. Ignored if `x` and -#' `ysize` are not specified. +#' `ysize` are not specified. If "NULL", the default, the mean value of the +#' y-axis is used. #' @param ysize `r lifecycle::badge("deprecated")` use the `height` or `width` #' argument instead. #' @param height \code{numeric}. Height of the silhouette in coordinate space. -#' If "NULL" and `width` is specified, the `height is determined by the aspect -#' ratio of the original image. If "Inf", the default, and `width` is "NULL", -#' the height will be as tall as will fit within the plot area. One or both of -#' `height` and `width` must be "NULL". +#' If "NULL", the default, and `width` is also "NULL", the silhouette will be +#' as large as fits in the plot area. If "NULL" and `width` is specified, the +#' height is determined by the aspect ratio of the original image. One or both +#' of `height` and `width` must be "NULL". #' @param width \code{numeric}. Width of the silhouette in coordinate space. If -#' "NULL", the default, and `height` is specified, the width is determined by -#' the aspect ratio of the original image. If "Inf" and `height` is "NA", the -#' width will be as wide as will fit within the plot area. One or both of -#' `height` and `width` must be "NULL". +#' "NULL", the default, and `height` is also "NULL", the silhouette will be as +#' large as fits in the plot area. If "NULL" and `height` is specified, the +#' width is determined by the aspect ratio of the original image. One or both +#' of `height` and `width` must be "NULL". #' @param alpha \code{numeric}. A value between 0 and 1, specifying the opacity #' of the silhouette (0 is fully transparent, 1 is fully opaque). #' @param color \code{character}. Color of silhouette outline. If "original" or @@ -56,8 +58,8 @@ #' Use parameters `x`, `y`, and `height`/`width` to place the silhouette at a #' specified position on the plot. If all of these parameters are unspecified, #' then the silhouette will be plotted to the full height and/or width of the -#' plot. The aspect ratio of the silhouette will always be maintained (even -#' when a plot is resized). However, if the plot is resized after plotting the +#' plot. The aspect ratio of `Picture` objects will always be maintained (even +#' when a plot is resized). However, if the plot is resized after plotting a #' silhouette, the absolute size and/or position of the silhouette may change. #' #' Any argument (except for `remove_background`) may be a vector of values if @@ -82,7 +84,7 @@ #' # single image #' plot(1, 1, type = "n", main = "A cat") #' add_phylopic_base(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", -#' x = 1, y = 1, ysize = 0.4) +#' x = 1, y = 1, height = 0.4) #' #' # lots of images using a uuid #' posx <- runif(10, 0, 1) @@ -205,21 +207,30 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, usr_x <- if (par()$xlog) 10^usr[1:2] else usr[1:2] usr_y <- if (par()$ylog) 10^usr[3:4] else usr[3:4] - # set default position and size if need be + # set default position and dimensions if need be if (is.null(x)) x <- mean(usr_x) if (is.null(y)) y <- mean(usr_y) - if (is.null(height) & is.null(width)) height <- abs(diff(usr_y)) - - # convert x, y, and height to normalized device coordinates + if (is.null(height) && is.null(width)) { + height <- abs(diff(usr_y)) + width <- abs(diff(usr_x)) + } + + # convert x and y to normalized device coordinates x <- grconvertX(x, to = "ndc") y <- grconvertY(y, to = "ndc") + + # convert width and/or height to normalized device coordinates if need be if (!is.null(height)) { height <- grconvertY(height, to = "ndc") - grconvertY(0, to = "ndc") - width <- NA - } else { + } + if (!is.null(width)) { width <- grconvertX(width, to = "ndc") - grconvertX(0, to = "ndc") - height <- NA } + + # change NULLs to NAs + if (is.null(width)) width <- NA + if (is.null(height)) height <- NA + invisible(mapply(function(img, x, y, height, width, alpha, color, fill, horizontal, vertical, angle, hjust, vjust) { if (is.null(img)) return(NULL) @@ -236,6 +247,10 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, if (fill == "original") fill <- NULL img <- recolor_phylopic(img, alpha, color, fill, remove_background) + # convert NAs back to NULLs + if (is.na(width)) width <- NULL + if (is.na(height)) height <- NULL + # grobify and plot if (is(img, "Picture")) { # svg if ("summary" %in% slotNames(img) && @@ -244,29 +259,16 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, all(is.finite(img@summary@xscale)) && diff(img@summary@xscale) != 0 && is.numeric(img@summary@yscale) && length(img@summary@yscale) == 2 && all(is.finite(img@summary@yscale)) && diff(img@summary@yscale) != 0) { - # placeholder until pictureGrob supports a NULL height/width - if (is.na(width)) { - width <- grconvertX( - grconvertY(height, from = "ndc", to = "inches") * aspect_ratio(img), - from = "inches", to = "ndc") - } - if (is.na(height)) { - height <- grconvertY( - grconvertX(width, from = "ndc", to = "inches") / aspect_ratio(img), - from = "inches", to = "ndc") - } grid.picture(img, x = x, y = y, height = height, width = width, - expansion = 0, just = c(hjust, vjust)) + expansion = 0, hjust = hjust, vjust = vjust, + delayContent = TRUE) } else { return(NULL) } } else { # png - if (is.na(width)) { - grid.raster(img, x = x, y = y, height = height, just = c(hjust, vjust)) - } - if (is.na(height)) { - grid.raster(img, x = x, y = y, width = width, just = c(hjust, vjust)) - } + # check width and height are correct aspect ratio + grid.raster(img, x = x, y = y, width = width, height = height, + hjust = hjust, vjust = vjust) } }, diff --git a/man/add_phylopic_base.Rd b/man/add_phylopic_base.Rd index fb8c4ef1..201051d1 100644 --- a/man/add_phylopic_base.Rd +++ b/man/add_phylopic_base.Rd @@ -41,22 +41,27 @@ for images which allows commercial usage, and "sa" for images without a ShareAlike clause. The user can also combine these filters as a vector.} \item{x}{\code{numeric}. x value of the silhouette center. Ignored if \code{y} and -\code{ysize} are not specified.} +\code{ysize} are not specified. If "NULL", the default, the mean value of the +x-axis is used.} \item{y}{\code{numeric}. y value of the silhouette center. Ignored if \code{x} and -\code{ysize} are not specified.} +\code{ysize} are not specified. If "NULL", the default, the mean value of the +y-axis is used.} \item{ysize}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} use the \code{height} or \code{width} argument instead.} \item{height}{\code{numeric}. Height of the silhouette in coordinate space. -If "NULL" and \code{width} is specified, the \verb{height is determined by the aspect ratio of the original image. If "Inf", the default, and }width\verb{is "NULL", the height will be as tall as will fit within the plot area. One or both of}height\code{and}width` must be "NULL".} +If "NULL", the default, and \code{width} is also "NULL", the silhouette will be +as large as fits in the plot area. If "NULL" and \code{width} is specified, the +height is determined by the aspect ratio of the original image. One or both +of \code{height} and \code{width} must be "NULL".} \item{width}{\code{numeric}. Width of the silhouette in coordinate space. If -"NULL", the default, and \code{height} is specified, the width is determined by -the aspect ratio of the original image. If "Inf" and \code{height} is "NA", the -width will be as wide as will fit within the plot area. One or both of -\code{height} and \code{width} must be "NULL".} +"NULL", the default, and \code{height} is also "NULL", the silhouette will be as +large as fits in the plot area. If "NULL" and \code{height} is specified, the +width is determined by the aspect ratio of the original image. One or both +of \code{height} and \code{width} must be "NULL".} \item{alpha}{\code{numeric}. A value between 0 and 1, specifying the opacity of the silhouette (0 is fully transparent, 1 is fully opaque).} @@ -101,8 +106,8 @@ One (and only one) of \code{img}, \code{name}, or \code{uuid} must be specified. Use parameters \code{x}, \code{y}, and \code{height}/\code{width} to place the silhouette at a specified position on the plot. If all of these parameters are unspecified, then the silhouette will be plotted to the full height and/or width of the -plot. The aspect ratio of the silhouette will always be maintained (even -when a plot is resized). However, if the plot is resized after plotting the +plot. The aspect ratio of \code{Picture} objects will always be maintained (even +when a plot is resized). However, if the plot is resized after plotting a silhouette, the absolute size and/or position of the silhouette may change. Any argument (except for \code{remove_background}) may be a vector of values if @@ -123,7 +128,7 @@ Also, outline colors do not currently work for png array objects. # single image plot(1, 1, type = "n", main = "A cat") add_phylopic_base(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", - x = 1, y = 1, ysize = 0.4) + x = 1, y = 1, height = 0.4) # lots of images using a uuid posx <- runif(10, 0, 1) From 1f712df157d26b67664f18aa99a9b28818cef920 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Mon, 29 Jul 2024 18:29:36 -0400 Subject: [PATCH 06/21] Update geom_phylopic and add_phylopic for grImport2 changes --- R/add_phylopic.r | 18 +++++------ R/geom_phylopic.R | 56 +++++++++++++--------------------- man/add_phylopic.Rd | 15 ++++++---- man/geom_phylopic.Rd | 71 ++++++++++++++++++++++++++++++++++---------- 4 files changed, 94 insertions(+), 66 deletions(-) diff --git a/R/add_phylopic.r b/R/add_phylopic.r index d4f0fd78..107d29b8 100644 --- a/R/add_phylopic.r +++ b/R/add_phylopic.r @@ -17,15 +17,15 @@ #' @param ysize `r lifecycle::badge("deprecated")` use the `height` or `width` #' argument instead. #' @param height \code{numeric}. Height of the silhouette in coordinate space. -#' If "NA" and `width` is specified, the `height is determined by the aspect -#' ratio of the original image. If "Inf", the default, and `width` is "NA", -#' the height will be as tall as will fit within the plot area. One or both of +#' If "NA", the default, and `width` is "NA", the silhouette will be as large +#' as fits in the plot area. If "NA" and `width` is specified, the height is +#' determined by the aspect ratio of the original image. One or both of #' `height` and `width` must be "NA". #' @param width \code{numeric}. Width of the silhouette in coordinate space. If -#' "NA", the default, and `height` is specified, the width is determined by -#' the aspect ratio of the original image. If "Inf" and `height` is "NA", -#' the width will be as wide as will fit within the plot area. One or both of -#' `height` and `width` must be "NA". +#' "NA", the default, and `height` is "NA", the silhouette will be as large as +#' fits in the plot area. If "NA", the default, and `height` is specified, the +#' width is determined by the aspect ratio of the original image. One or both +#' of `height` and `width` must be "NA". #' @param alpha \code{numeric}. A value between 0 and 1, specifying the opacity #' of the silhouette (0 is fully transparent, 1 is fully opaque). #' @param color \code{character}. Color of silhouette outline. If "original" or @@ -103,7 +103,7 @@ #' p + ggtitle("R Cat Herd!!") #' } add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, - x, y, ysize = deprecated(), height = Inf, width = NA, + x, y, ysize = deprecated(), height = NA, width = NA, alpha = 1, color = NA, fill = "black", horizontal = FALSE, vertical = FALSE, angle = 0, hjust = 0.5, vjust = 0.5, @@ -121,7 +121,7 @@ add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, if (lifecycle::is_present(ysize)) { lifecycle::deprecate_warn("1.4.0", "add_phylopic(ysize)", "add_phylopic(height)") - if (is.null(height)) height <- ysize + if (is.null(height) || all(is.na(height))) height <- ysize } # Make all variables the same length diff --git a/R/geom_phylopic.R b/R/geom_phylopic.R index dd369796..2e8e2faa 100644 --- a/R/geom_phylopic.R +++ b/R/geom_phylopic.R @@ -14,8 +14,8 @@ phylopic_env <- new.env() #' aesthetic specifies the height or width, respectively, of the silhouettes #' in the units of the y axis (only one is allowed). The aspect ratio of the #' silhouettes will always be maintained. The `hjust` and `vjust` aesthetics -#' can be used to manage the justification of the silhouettes with respect the -#' `x` and `y` coordinates. +#' can be used to manage the justification of the silhouettes with respect to +#' the `x` and `y` coordinates. #' #' The `color` (default: NA), `fill` (default: "black"), and `alpha` ( #' default: 1) aesthetics can be used to change the outline color, fill color, @@ -143,7 +143,7 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, optional_aes = c("height", "width", "img", "name", "uuid"), # one and only one of img/name/uuid # size is deprecated - default_aes = aes(height = 6, width = NA, + default_aes = aes(height = NA, width = NA, alpha = 1, color = NA, fill = "black", horizontal = FALSE, vertical = FALSE, angle = 0, hjust = 0.5, vjust = 0.5), @@ -282,7 +282,7 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, # Transform data data <- coord$transform(data, panel_params) - if (all(is.na(data$width))) { + if (any(!is.na(data$height))) { # Calculate height as percentage of y limits # (or r limits for polar coordinates) if ("y.range" %in% names(panel_params)) { @@ -295,16 +295,13 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, y_diff <- 1 } if (any(data$height < (y_diff / 1000))) { - warning(paste("Your specified silhouette `height`(s) are more than 1000", - "times smaller than your y-axis range. You probably want", - "to use a larger `height`."), call. = FALSE) + warning(paste("Your specified silhouette `height`(s) are more than", + "1000 times smaller than your y-axis range. You probably", + "want to use a larger `height`."), call. = FALSE) } - heights <- data$height / y_diff - - # Hack to make silhouettes the full height of the plot - heights[is.infinite(heights)] <- 1 - widths <- data$width - } else { + data$height <- data$height / y_diff + } + if (any(!is.na(data$width))) { # Calculate width as percentage of x limits # (or r limits for polar coordinates) if ("x.range" %in% names(panel_params)) { @@ -321,20 +318,16 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, "times smaller than your x-axis range. You probably want", "to use a larger `width`."), call. = FALSE) } - widths <- data$width / x_diff - - # Hack to make silhouettes the full height of the plot - widths[is.infinite(widths)] <- 1 - heights <- data$height + data$width <- data$width / x_diff } - # Make a grob for each silhouette grobs <- lapply(seq_len(nrow(data)), function(i) { if (is.null(data$img[[i]])) { nullGrob() } else { - phylopicGrob(data$img[[i]], data$x[i], data$y[i], heights[i], widths[i], + phylopicGrob(data$img[[i]], data$x[i], data$y[i], + data$height[i], data$width[i], data$colour[i], data$fill[i], data$alpha[i], data$horizontal[i], data$vertical[i], data$angle[i], data$hjust[i], data$vjust[i], @@ -464,7 +457,6 @@ phylopicGrob <- function(img, x, y, height, width, horizontal, vertical, angle, hjust, vjust, remove_background) { - # modified from add_phylopic for now if (horizontal || vertical) img <- flip_phylopic(img, horizontal, vertical) if (!is.na(angle) && angle != 0) img <- rotate_phylopic(img, angle) @@ -474,6 +466,10 @@ phylopicGrob <- function(img, x, y, height, width, fill <- if (!is.null(fill) && fill == "original") NULL else fill img <- recolor_phylopic(img, alpha, color, fill, remove_background) + # convert NAs to NULLs + if (is.na(height)) height <- NULL + if (is.na(width)) width <- NULL + # grobify if (is(img, "Picture")) { # svg if ("summary" %in% slotNames(img) && @@ -482,33 +478,23 @@ phylopicGrob <- function(img, x, y, height, width, all(is.finite(img@summary@xscale)) && diff(img@summary@xscale) != 0 && is.numeric(img@summary@yscale) && length(img@summary@yscale) == 2 && all(is.finite(img@summary@yscale)) && diff(img@summary@yscale) != 0) { - # placeholder until pictureGrob supports a NULL height/width - if (is.na(height)) height <- width / aspect_ratio(img) - if (is.na(width)) width <- height * aspect_ratio(img) # modified from # https://github.com/k-hench/hypoimg/blob/master/R/hypoimg_recolor_svg.R img_grob <- pictureGrob(img, x = x, y = y, height = height, width = width, default.units = "native", expansion = 0, - just = c(hjust, vjust)) + hjust = hjust, vjust = vjust, + delayContent = TRUE) img_grob <- gList(img_grob) img_grob <- gTree(children = img_grob) } else { img_grob <- nullGrob() } } else { # png - if (is.na(height)) { img_grob <- rasterGrob(img, x = x, y = y, - height = NULL, width = width, + height = height, width = width, default.units = "native", - just = c(hjust, vjust)) - } - if (is.na(width)) { - img_grob <- rasterGrob(img, x = x, y = y, - height = height, width = NULL, - default.units = "native", - just = c(hjust, vjust)) - } + hjust = hjust, vjust = vjust) } return(img_grob) } diff --git a/man/add_phylopic.Rd b/man/add_phylopic.Rd index 2f095a11..6db46dcf 100644 --- a/man/add_phylopic.Rd +++ b/man/add_phylopic.Rd @@ -12,7 +12,7 @@ add_phylopic( x, y, ysize = deprecated(), - height = Inf, + height = NA, width = NA, alpha = 1, color = NA, @@ -48,13 +48,16 @@ ShareAlike clause. The user can also combine these filters as a vector.} argument instead.} \item{height}{\code{numeric}. Height of the silhouette in coordinate space. -If "NA" and \code{width} is specified, the \verb{height is determined by the aspect ratio of the original image. If "Inf", the default, and }width\verb{is "NA", the height will be as tall as will fit within the plot area. One or both of}height\code{and}width` must be "NA".} +If "NA", the default, and \code{width} is "NA", the silhouette will be as large +as fits in the plot area. If "NA" and \code{width} is specified, the height is +determined by the aspect ratio of the original image. One or both of +\code{height} and \code{width} must be "NA".} \item{width}{\code{numeric}. Width of the silhouette in coordinate space. If -"NA", the default, and \code{height} is specified, the width is determined by -the aspect ratio of the original image. If "Inf" and \code{height} is "NA", -the width will be as wide as will fit within the plot area. One or both of -\code{height} and \code{width} must be "NA".} +"NA", the default, and \code{height} is "NA", the silhouette will be as large as +fits in the plot area. If "NA", the default, and \code{height} is specified, the +width is determined by the aspect ratio of the original image. One or both +of \code{height} and \code{width} must be "NA".} \item{alpha}{\code{numeric}. A value between 0 and 1, specifying the opacity of the silhouette (0 is fully transparent, 1 is fully opaque).} diff --git a/man/geom_phylopic.Rd b/man/geom_phylopic.Rd index bea59c98..ba7fe935 100644 --- a/man/geom_phylopic.Rd +++ b/man/geom_phylopic.Rd @@ -39,20 +39,59 @@ the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} -\item{stat}{The statistical transformation to use on the data for this -layer, either as a \code{ggproto} \code{Geom} subclass or as a string naming the -stat stripped of the \code{stat_} prefix (e.g. \code{"count"} rather than -\code{"stat_count"})} - -\item{position}{Position adjustment, either as a string naming the adjustment -(e.g. \code{"jitter"} to use \code{position_jitter}), or the result of a call to a -position adjustment function. Use the latter if you need to change the -settings of the adjustment.} - -\item{...}{Other arguments passed on to \code{\link[ggplot2:layer]{layer()}}. These are -often aesthetics, used to set an aesthetic to a fixed value, like -\code{colour = "red"} or \code{size = 3}. They may also be parameters -to the paired geom/stat.} +\item{stat}{The statistical transformation to use on the data for this layer. +When using a \verb{geom_*()} function to construct a layer, the \code{stat} +argument can be used the override the default coupling between geoms and +stats. The \code{stat} argument accepts the following: +\itemize{ +\item A \code{Stat} ggproto subclass, for example \code{StatCount}. +\item A string naming the stat. To give the stat as a string, strip the +function name of the \code{stat_} prefix. For example, to use \code{stat_count()}, +give the stat as \code{"count"}. +\item For more information and other ways to specify the stat, see the +\link[ggplot2:layer_stats]{layer stat} documentation. +}} + +\item{position}{A position adjustment to use on the data for this layer. This +can be used in various ways, including to prevent overplotting and +improving the display. The \code{position} argument accepts the following: +\itemize{ +\item The result of calling a position function, such as \code{position_jitter()}. +This method allows for passing extra arguments to the position. +\item A string naming the position adjustment. To give the position as a +string, strip the function name of the \code{position_} prefix. For example, +to use \code{position_jitter()}, give the position as \code{"jitter"}. +\item For more information and other ways to specify the position, see the +\link[ggplot2:layer_positions]{layer position} documentation. +}} + +\item{...}{Other arguments passed on to \code{\link[ggplot2:layer]{layer()}}'s \code{params} argument. These +arguments broadly fall into one of 4 categories below. Notably, further +arguments to the \code{position} argument, or aesthetics that are required +can \emph{not} be passed through \code{...}. Unknown arguments that are not part +of the 4 categories below are ignored. +\itemize{ +\item Static aesthetics that are not mapped to a scale, but are at a fixed +value and apply to the layer as a whole. For example, \code{colour = "red"} +or \code{linewidth = 3}. The geom's documentation has an \strong{Aesthetics} +section that lists the available options. The 'required' aesthetics +cannot be passed on to the \code{params}. Please note that while passing +unmapped aesthetics as vectors is technically possible, the order and +required length is not guaranteed to be parallel to the input data. +\item When constructing a layer using +a \verb{stat_*()} function, the \code{...} argument can be used to pass on +parameters to the \code{geom} part of the layer. An example of this is +\code{stat_density(geom = "area", outline.type = "both")}. The geom's +documentation lists which parameters it can accept. +\item Inversely, when constructing a layer using a +\verb{geom_*()} function, the \code{...} argument can be used to pass on parameters +to the \code{stat} part of the layer. An example of this is +\code{geom_area(stat = "density", adjust = 0.5)}. The stat's documentation +lists which parameters it can accept. +\item The \code{key_glyph} argument of \code{\link[ggplot2:layer]{layer()}} may also be passed on through +\code{...}. This can be one of the functions described as +\link[ggplot2:draw_key]{key glyphs}, to change the display of the layer in the legend. +}} \item{na.rm}{If \code{FALSE}, the default, missing values are removed with a warning. If \code{TRUE}, missing values are silently removed.} @@ -93,8 +132,8 @@ silhouettes at specified positions on the plot. The \code{height} or \code{width aesthetic specifies the height or width, respectively, of the silhouettes in the units of the y axis (only one is allowed). The aspect ratio of the silhouettes will always be maintained. The \code{hjust} and \code{vjust} aesthetics -can be used to manage the justification of the silhouettes with respect the -\code{x} and \code{y} coordinates. +can be used to manage the justification of the silhouettes with respect to +the \code{x} and \code{y} coordinates. The \code{color} (default: NA), \code{fill} (default: "black"), and \code{alpha} ( default: 1) aesthetics can be used to change the outline color, fill color, From 5f919abc12f6c9bf1e1fc817a20675fb93d98bdc Mon Sep 17 00:00:00 2001 From: William Gearty Date: Mon, 29 Jul 2024 18:31:08 -0400 Subject: [PATCH 07/21] Update plot.Picture for grImport2 changes --- R/phylopic_utils.R | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/R/phylopic_utils.R b/R/phylopic_utils.R index 78f1b6af..83dfda35 100644 --- a/R/phylopic_utils.R +++ b/R/phylopic_utils.R @@ -282,8 +282,12 @@ recolor_content <- function(x, alpha, color, fill, remove_background) { #' @importFrom grImport2 grid.picture #' @export plot.Picture <- function(x, ...) { + args <- list(...) + if (is.null(args$expansion)) args$expansion <- 0 + if (is.null(args$delayContent)) args$delayContent <- TRUE + args$picture <- x grid.newpage() - grid.picture(x, ...) + do.call(grid.picture, args) } #' @rdname plot_phylopic From 1f147eede87694bdf437e8dddeccde40624fb1f9 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Mon, 29 Jul 2024 18:31:23 -0400 Subject: [PATCH 08/21] Keep class when transforming pngs --- R/phylopic_utils.R | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/R/phylopic_utils.R b/R/phylopic_utils.R index 83dfda35..b60510a1 100644 --- a/R/phylopic_utils.R +++ b/R/phylopic_utils.R @@ -39,6 +39,7 @@ flip_phylopic.Picture <- function(img, horizontal = TRUE, vertical = FALSE) { #' @export flip_phylopic.array <- function(img, horizontal = TRUE, vertical = FALSE) { + cls <- class(img) if (length(dim(img)) != 3) { stop("`img` must be an array with three dimensions.") } @@ -50,6 +51,7 @@ flip_phylopic.array <- function(img, horizontal = TRUE, vertical = FALSE) { if (vertical) { img <- img[rev(seq_len(nrow(img))), , , drop = FALSE] } + class(img) <- cls img } @@ -112,6 +114,7 @@ rotate_phylopic.array <- function(img, angle = 90) { function(i) rotate(img_new[, , i])) ) } + class(img_new) <- class(img) img_new } @@ -180,6 +183,7 @@ recolor_phylopic <- function(img, alpha = 1, color = NULL, fill = NULL, #' @export recolor_phylopic.array <- function(img, alpha = 1, color = NULL, fill = NULL, remove_background = TRUE) { + cls <- class(img) if (!is.null(color)) { message("Outline color does not currently work with png image objects.") } @@ -210,6 +214,7 @@ recolor_phylopic.array <- function(img, alpha = 1, color = NULL, fill = NULL, rep(cols[3, 1], imglen), img[, , 4] * alpha), dim = dims) } + class(new_img) <- cls return(new_img) } From 92d2389f4439db110a0e51aafeb506d1c5bd1eff Mon Sep 17 00:00:00 2001 From: William Gearty Date: Mon, 29 Jul 2024 18:45:31 -0400 Subject: [PATCH 09/21] Update snapshots --- .../phylopic-key-glyph-with-img.svg | 22 +++++++++-------- .../phylopic-key-glyph-with-larger-glyphs.svg | 24 ++++++++++--------- .../phylopic-key-glyph-with-uuid.svg | 22 +++++++++-------- .../geom_phylopic/phylopic-key-glyph.svg | 22 +++++++++-------- .../_snaps/phylopic_utils/plot-picture.svg | 4 ++-- 5 files changed, 51 insertions(+), 43 deletions(-) diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg index 77fa7570..15f2a4fb 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-img.svg @@ -29,24 +29,24 @@ - - + + - - - + + + - - + + - - - + + + @@ -69,6 +69,7 @@ y name + @@ -80,6 +81,7 @@ + diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg index 02f0d27a..d2dc1267 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-larger-glyphs.svg @@ -18,7 +18,7 @@ - + @@ -29,24 +29,24 @@ - - + + - - - + + + - - + + - - - + + + @@ -69,6 +69,7 @@ y name + @@ -80,6 +81,7 @@ + diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg index a42997d3..263d8c52 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph-with-uuid.svg @@ -29,24 +29,24 @@ - - + + - - - + + + - - + + - - - + + + @@ -69,6 +69,7 @@ y name + @@ -80,6 +81,7 @@ + diff --git a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg index fe2666c3..89b2914a 100644 --- a/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg +++ b/tests/testthat/_snaps/geom_phylopic/phylopic-key-glyph.svg @@ -29,24 +29,24 @@ - - + + - - - + + + - - + + - - - + + + @@ -69,6 +69,7 @@ y name + @@ -80,6 +81,7 @@ + diff --git a/tests/testthat/_snaps/phylopic_utils/plot-picture.svg b/tests/testthat/_snaps/phylopic_utils/plot-picture.svg index 27a16c32..ea6ac883 100644 --- a/tests/testthat/_snaps/phylopic_utils/plot-picture.svg +++ b/tests/testthat/_snaps/phylopic_utils/plot-picture.svg @@ -25,8 +25,8 @@ - - + + From 5476f1517887f8dec040440bcbfc51fdca207170 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 11:38:06 -0400 Subject: [PATCH 10/21] Add tests for geom_phylopic --- DESCRIPTION | 4 +- R/geom_phylopic.R | 10 +- ...eom-phylopic-with-alt-height-and-width.svg | 110 ++++++++++ .../geom-phylopic-with-no-dims.svg | 94 +++++++++ .../geom-phylopic-with-width.svg | 198 ++++++++++++++++++ tests/testthat/test-geom_phylopic.R | 31 ++- 6 files changed, 439 insertions(+), 8 deletions(-) create mode 100644 tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-alt-height-and-width.svg create mode 100644 tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-no-dims.svg create mode 100644 tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-width.svg diff --git a/DESCRIPTION b/DESCRIPTION index 6f0215a9..7f6dd2b2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -20,7 +20,7 @@ Encoding: UTF-8 LazyData: true biocViews: Roxygen: list(markdown = TRUE) -RoxygenNote: 7.3.1 +RoxygenNote: 7.3.2 Depends: R (>= 4.0) Imports: @@ -29,7 +29,7 @@ Imports: grid, graphics, png, - grImport2 (>= 0.3.0), + grImport2 (>= 0.3.3), rsvg (>= 2.6.0), httr, curl, diff --git a/R/geom_phylopic.R b/R/geom_phylopic.R index 2e8e2faa..acaed088 100644 --- a/R/geom_phylopic.R +++ b/R/geom_phylopic.R @@ -106,7 +106,7 @@ geom_phylopic <- function(mapping = NULL, data = NULL, dots$img <- list(dots$img) } if (!is.null(dots$size)) { - lifecycle::deprecate_warn("1.4.0", + lifecycle::deprecate_warn("1.5.0", I("Using the `size` aesthetic in this geom"), I("the `height` and `width` aesthetics"), user_env = globalenv()) @@ -230,7 +230,7 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, default_aes <- self$default_aes # Inherit size as height if no height aesthetic and param exist if (!is.null(data$size)) { - lifecycle::deprecate_warn("1.4.0", + lifecycle::deprecate_warn("1.5.0", I("Using the `size` aesthetic in this geom"), I("the `height` and `width` aesthetics"), user_env = globalenv()) @@ -266,7 +266,7 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, stop("`vjust` must be between 0 and 1.") } if (!is.null(data$size)) { - lifecycle::deprecate_warn("1.4.0", + lifecycle::deprecate_warn("1.5.0", I("Using the `size` aesthetic in this geom"), I("the `height` and `width` aesthetics"), user_env = globalenv()) @@ -294,7 +294,7 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, } else { y_diff <- 1 } - if (any(data$height < (y_diff / 1000))) { + if (any(data$height < (y_diff / 1000), na.rm = TRUE)) { warning(paste("Your specified silhouette `height`(s) are more than", "1000 times smaller than your y-axis range. You probably", "want to use a larger `height`."), call. = FALSE) @@ -313,7 +313,7 @@ GeomPhylopic <- ggproto("GeomPhylopic", Geom, } else { x_diff <- 1 } - if (any(data$width < (x_diff / 1000))) { + if (any(data$width < (x_diff / 1000), na.rm = TRUE)) { warning(paste("Your specified silhouette `width`(s) are more than 1000", "times smaller than your x-axis range. You probably want", "to use a larger `width`."), call. = FALSE) diff --git a/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-alt-height-and-width.svg b/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-alt-height-and-width.svg new file mode 100644 index 00000000..add7eb33 --- /dev/null +++ b/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-alt-height-and-width.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +10 +20 +30 + + + + + + + +2 +4 +6 +x +y +geom_phylopic with alt height and width + + diff --git a/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-no-dims.svg b/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-no-dims.svg new file mode 100644 index 00000000..b633357c --- /dev/null +++ b/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-no-dims.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +10 +20 +30 + + + + + + + +2 +4 +6 +x +y +geom_phylopic with no dims + + diff --git a/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-width.svg b/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-width.svg new file mode 100644 index 00000000..18dc345f --- /dev/null +++ b/tests/testthat/_snaps/geom_phylopic/geom-phylopic-with-width.svg @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +d2575005-1fcb-4a86-8c83-e3bda619adf2 + + + + + + + + + + +e25f1863-331b-4891-8084-fe8602e4cf8d + + + + + + + + + + +0a8ab4f9-04c9-4485-b21a-df683d506055 + + + + + + + + + + +c8f71c27-71db-4b34-ac2d-e97fea8762cf + + + + + + +2 +4 +6 + + + + +2 +4 +6 + +10 +20 +30 + + + + +10 +20 +30 + + + +x +y +geom_phylopic with width + + diff --git a/tests/testthat/test-geom_phylopic.R b/tests/testthat/test-geom_phylopic.R index c11f9342..76e3d27d 100644 --- a/tests/testthat/test-geom_phylopic.R +++ b/tests/testthat/test-geom_phylopic.R @@ -18,7 +18,28 @@ test_that("geom_phylopic works", { expect_true(is.ggplot(gg)) expect_true(is(gg$layers[[1]]$geom, "GeomPhylopic")) expect_doppelganger("geom_phylopic", gg) + + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y, uuid = uuid), width = 0.5) + + facet_wrap(~uuid) + + coord_cartesian(xlim = c(1, 6), ylim = c(5, 30)) + + theme_classic(base_size = 16) + expect_doppelganger("geom_phylopic with width", gg) + cat_svg <- get_phylopic("23cd6aa4-9587-4a2e-8e26-de42885004c9") + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y), img = list(cat_svg)) + + coord_cartesian(xlim = c(1, 6), ylim = c(5, 30)) + + theme_classic(base_size = 16) + expect_doppelganger("geom_phylopic with no dims", gg) + + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y, uuid = uuid), + height = c(NA, 10, NA, 10), width = c(0.5, NA, 0.5, NA)) + + coord_cartesian(xlim = c(1, 6), ylim = c(5, 30)) + + theme_classic(base_size = 16) + expect_doppelganger("geom_phylopic with alt height and width", gg) + cat_png <- get_phylopic("23cd6aa4-9587-4a2e-8e26-de42885004c9", format = "raster") gg <- ggplot(df) + @@ -29,13 +50,21 @@ test_that("geom_phylopic works", { expect_doppelganger("geom_phylopic with png", gg) # Errors and warnings + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y, uuid = uuid), size = 5) + expect_deprecated(plot(gg)) gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y, uuid = uuid), alpha = -5) expect_error(plot(gg)) expect_error(ggplot(df) + - geom_phylopic(aes(x = x, y = y, uuid = uuid), remove_background = "yes")) + geom_phylopic(aes(x = x, y = y, uuid = uuid), + remove_background = "yes")) expect_error(ggplot(df) + geom_phylopic(aes(x = x, y = y, uuid = uuid), verbose = "yes")) + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y, uuid = uuid), + name = "cat", height = 1, width = 1) + expect_error(plot(gg)) gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y, uuid = uuid), name = "cat", verbose = TRUE) expect_error(plot(gg)) From 72b2d245fa1431570f9d654be32f78976ce8c946 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 11:44:41 -0400 Subject: [PATCH 11/21] Fix test --- tests/testthat/test-geom_phylopic.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-geom_phylopic.R b/tests/testthat/test-geom_phylopic.R index 76e3d27d..21129fad 100644 --- a/tests/testthat/test-geom_phylopic.R +++ b/tests/testthat/test-geom_phylopic.R @@ -52,7 +52,7 @@ test_that("geom_phylopic works", { # Errors and warnings gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y, uuid = uuid), size = 5) - expect_deprecated(plot(gg)) + lifecycle::expect_deprecated(plot(gg)) gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y, uuid = uuid), alpha = -5) expect_error(plot(gg)) From be514db180ba2ec788d91a0cdc7df1fdc5cd57c9 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 11:52:09 -0400 Subject: [PATCH 12/21] Actually fix test --- tests/testthat/test-geom_phylopic.R | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/testthat/test-geom_phylopic.R b/tests/testthat/test-geom_phylopic.R index 21129fad..a2595cf3 100644 --- a/tests/testthat/test-geom_phylopic.R +++ b/tests/testthat/test-geom_phylopic.R @@ -50,9 +50,11 @@ test_that("geom_phylopic works", { expect_doppelganger("geom_phylopic with png", gg) # Errors and warnings - gg <- ggplot(df) + - geom_phylopic(aes(x = x, y = y, uuid = uuid), size = 5) - lifecycle::expect_deprecated(plot(gg)) + lifecycle::expect_deprecated({ + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y, uuid = uuid), size = 5) + plot(gg) + }) gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y, uuid = uuid), alpha = -5) expect_error(plot(gg)) From 0a101f0d4ef75104e3a2ac3047522a9a66a310fc Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 14:30:15 -0400 Subject: [PATCH 13/21] Add tests for add_phylopic --- R/add_phylopic.r | 2 +- .../phylopics-with-alt-height-and-width.svg | 605 ++++++++++++++++++ .../add_phylopic/phylopics-with-widths.svg | 605 ++++++++++++++++++ tests/testthat/test-add_phylopic.R | 25 + 4 files changed, 1236 insertions(+), 1 deletion(-) create mode 100644 tests/testthat/_snaps/add_phylopic/phylopics-with-alt-height-and-width.svg create mode 100644 tests/testthat/_snaps/add_phylopic/phylopics-with-widths.svg diff --git a/R/add_phylopic.r b/R/add_phylopic.r index 107d29b8..f53fb6b1 100644 --- a/R/add_phylopic.r +++ b/R/add_phylopic.r @@ -119,7 +119,7 @@ add_phylopic <- function(img = NULL, name = NULL, uuid = NULL, filter = NULL, } if (lifecycle::is_present(ysize)) { - lifecycle::deprecate_warn("1.4.0", "add_phylopic(ysize)", + lifecycle::deprecate_warn("1.5.0", "add_phylopic(ysize)", "add_phylopic(height)") if (is.null(height) || all(is.na(height))) height <- ysize } diff --git a/tests/testthat/_snaps/add_phylopic/phylopics-with-alt-height-and-width.svg b/tests/testthat/_snaps/add_phylopic/phylopics-with-alt-height-and-width.svg new file mode 100644 index 00000000..2faae276 --- /dev/null +++ b/tests/testthat/_snaps/add_phylopic/phylopics-with-alt-height-and-width.svg @@ -0,0 +1,605 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.0 +2.5 +5.0 +7.5 + + + + + + + + + +0.0 +2.5 +5.0 +7.5 +10.0 +cat.x +cat.y +phylopics with alt height and width + + diff --git a/tests/testthat/_snaps/add_phylopic/phylopics-with-widths.svg b/tests/testthat/_snaps/add_phylopic/phylopics-with-widths.svg new file mode 100644 index 00000000..4978be1f --- /dev/null +++ b/tests/testthat/_snaps/add_phylopic/phylopics-with-widths.svg @@ -0,0 +1,605 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.0 +2.5 +5.0 +7.5 + + + + + + + + + +0.0 +2.5 +5.0 +7.5 +10.0 +cat.x +cat.y +phylopics with widths + + diff --git a/tests/testthat/test-add_phylopic.R b/tests/testthat/test-add_phylopic.R index ab101053..20d2d34a 100644 --- a/tests/testthat/test-add_phylopic.R +++ b/tests/testthat/test-add_phylopic.R @@ -40,6 +40,31 @@ test_that("add_phylopic works", { angle = angle, horizontal = hor, vertical = ver) p <- p + ggtitle("R Cat Herd!!") expect_doppelganger("phylopics on top of plot", p) + + p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + + geom_blank() + + add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", + x = posx, y = posy, width = sizey, + fill = fills, color = cols, alpha = alpha, + angle = angle, horizontal = hor, vertical = ver) + expect_doppelganger("phylopics with widths", p) + + p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + + geom_blank() + + add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", + x = posx, y = posy, + width = c(1, NA, 2, NA), height = c(NA, 1, NA, 2), + fill = fills, color = cols, alpha = alpha, + angle = angle, horizontal = hor, vertical = ver) + expect_doppelganger("phylopics with alt height and width", p) + + lifecycle::expect_deprecated({ + p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + + geom_blank() + + add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", + x = posx, y = posy, ysize = sizey) + plot(p) + }) # Expect error expect_error(add_phylopic(img = "cat")) From aa0adcd8ff6152bcb52498d7d74285f3eae0cda8 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 14:41:40 -0400 Subject: [PATCH 14/21] Add tests for add_phylopic_base and add_phylopic_legend --- R/add_phylopic_base.r | 2 +- R/add_phylopic_legend.R | 4 +- .../add_phylopic_base/phylopic-with-width.svg | 59 +++++++++++++++++++ tests/testthat/test-add_phylopic_base.R | 12 ++++ tests/testthat/test-add_phylopic_legend.R | 11 ++++ 5 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 tests/testthat/_snaps/add_phylopic_base/phylopic-with-width.svg diff --git a/R/add_phylopic_base.r b/R/add_phylopic_base.r index 71509f98..b04f4563 100644 --- a/R/add_phylopic_base.r +++ b/R/add_phylopic_base.r @@ -139,7 +139,7 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, stop("`verbose` should be a logical value.") } if (lifecycle::is_present(ysize)) { - lifecycle::deprecate_warn("1.4.0", "add_phylopic_base(ysize)", + lifecycle::deprecate_warn("1.5.0", "add_phylopic_base(ysize)", "add_phylopic_base(height)") if (is.null(height)) height <- ysize } diff --git a/R/add_phylopic_legend.R b/R/add_phylopic_legend.R index f1cfef24..203b38dc 100644 --- a/R/add_phylopic_legend.R +++ b/R/add_phylopic_legend.R @@ -49,7 +49,7 @@ add_phylopic_legend <- function(x, y = NULL, legend, color = NA, fill = "black", ...) { if (lifecycle::is_present(ysize)) { - lifecycle::deprecate_warn("1.4.0", "add_phylopic_legend(ysize)", + lifecycle::deprecate_warn("1.5.0", "add_phylopic_legend(ysize)", "add_phylopic_legend(height)") if (is.null(height)) height <- ysize } @@ -76,7 +76,7 @@ add_phylopic_legend <- function(x, y = NULL, legend, # size values size <- args[["pt.cex"]] if (!is.null(size)) height <- size - # Set default ysize if required + # Set default height if required if (is.null(height)) height <- (abs(diff(leg_pos$text$y)) * 0.5) # Extract positions # Adjust x position slightly to account for width diff --git a/tests/testthat/_snaps/add_phylopic_base/phylopic-with-width.svg b/tests/testthat/_snaps/add_phylopic_base/phylopic-with-width.svg new file mode 100644 index 00000000..cc28f7d4 --- /dev/null +++ b/tests/testthat/_snaps/add_phylopic_base/phylopic-with-width.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + +0.6 +0.8 +1.0 +1.2 +1.4 + + + + + + +0.6 +0.8 +1.0 +1.2 +1.4 + +A cat +1 +1 + + + + + + + + + + + + + diff --git a/tests/testthat/test-add_phylopic_base.R b/tests/testthat/test-add_phylopic_base.R index 8293f179..711ecec3 100644 --- a/tests/testthat/test-add_phylopic_base.R +++ b/tests/testthat/test-add_phylopic_base.R @@ -7,6 +7,12 @@ test_that("add_phylopic_base works", { add_phylopic_base(name = "Felis silvestris catus", height = .7, verbose = TRUE) }) + + expect_doppelganger("phylopic with width", function() { + plot(1, 1, type = "n", main = "A cat") + add_phylopic_base(name = "Felis silvestris catus", width = .4, + verbose = TRUE) + }) # png phylopic in background expect_doppelganger("phylopic png in background", function() { @@ -45,6 +51,10 @@ test_that("add_phylopic_base works", { verbose = TRUE))) expect_warning(add_phylopic_base(uuid = "jkl;daf", filter = "by")) + lifecycle::expect_deprecated({ + add_phylopic_base(name = "Felis silvestris catus", ysize = .7) + }) + # Expect error expect_error(add_phylopic_base(img = "cat")) expect_error(add_phylopic_base(img = cat, verbose = "yes")) @@ -53,4 +63,6 @@ test_that("add_phylopic_base works", { expect_error(add_phylopic_base(cat, alpha = 3)) expect_error(add_phylopic_base(name = 42)) expect_error(add_phylopic_base(uuid = 42)) + expect_error(add_phylopic_base(name = "Felis silvestris catus", + height = 5, width = 5)) }) diff --git a/tests/testthat/test-add_phylopic_legend.R b/tests/testthat/test-add_phylopic_legend.R index 02143f8a..9aef0c91 100644 --- a/tests/testthat/test-add_phylopic_legend.R +++ b/tests/testthat/test-add_phylopic_legend.R @@ -40,4 +40,15 @@ test_that("add_phylopic_legend works", { x = "bottomright", legend = c("Wolf 1", "Wolf 2"), col = "black", pt.bg = c("blue", "green")) }) + + lifecycle::expect_deprecated({ + plot(0:10, 0:10, type = "n", main = "Wolves") + add_phylopic_base(uuid = uuids, + color = "black", fill = c("blue", "green"), + x = c(2.5, 7.5), y = c(2.5, 7.5), height = 2) + add_phylopic_legend(uuid = uuids, + x = "bottomright", legend = c("Wolf 1", "Wolf 2"), + col = "black", pt.bg = c("blue", "green"), + ysize = 2) + }) }) From cca83e6fe332ca33a0b9d0e8ac995953c8899a01 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 15:38:06 -0400 Subject: [PATCH 15/21] Fix a bunch of tests --- tests/testthat/test-add_phylopic.R | 29 ++++++++++++++++++++----- tests/testthat/test-add_phylopic_base.R | 14 +++++++----- tests/testthat/test-geom_phylopic.R | 6 +++++ 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/tests/testthat/test-add_phylopic.R b/tests/testthat/test-add_phylopic.R index 20d2d34a..4a58322f 100644 --- a/tests/testthat/test-add_phylopic.R +++ b/tests/testthat/test-add_phylopic.R @@ -66,12 +66,31 @@ test_that("add_phylopic works", { plot(p) }) + p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + + geom_blank() + cat_svg <- get_phylopic("23cd6aa4-9587-4a2e-8e26-de42885004c9") # Expect error expect_error(add_phylopic(img = "cat")) - expect_error(add_phylopic(cat, name = "cat")) + expect_error(add_phylopic(cat_svg, name = "cat")) expect_error(add_phylopic()) - expect_error(add_phylopic(cat, alpha = 3)) - expect_error(add_phylopic(name = 42)) - expect_error(add_phylopic(name = "bueller")) - expect_error(add_phylopic(uuid = 42)) + expect_error({ + plot(p + add_phylopic(cat_svg, alpha = 3, x = 5, y = 5)) + }) + expect_error({ + plot(p + add_phylopic(cat_svg, hjust = 3, x = 5, y = 5)) + }) + expect_error({ + plot(p + add_phylopic(cat_svg, vjust = 3, x = 5, y = 5)) + }) + expect_error({ + plot(p + add_phylopic(name = 42, x = 5, y = 5, verbose = TRUE)) + }) + expect_error({ + plot(p + add_phylopic(uuid = 42, x = 5, y = 5, verbose = TRUE)) + }) + + # Expect warning + expect_warning({ + plot(p + add_phylopic(name = "bueller", x = 5, y = 5, verbose = TRUE)) + }) }) diff --git a/tests/testthat/test-add_phylopic_base.R b/tests/testthat/test-add_phylopic_base.R index 711ecec3..4f6e6f13 100644 --- a/tests/testthat/test-add_phylopic_base.R +++ b/tests/testthat/test-add_phylopic_base.R @@ -51,18 +51,20 @@ test_that("add_phylopic_base works", { verbose = TRUE))) expect_warning(add_phylopic_base(uuid = "jkl;daf", filter = "by")) + cat_svg <- get_phylopic("23cd6aa4-9587-4a2e-8e26-de42885004c9") lifecycle::expect_deprecated({ - add_phylopic_base(name = "Felis silvestris catus", ysize = .7) + add_phylopic_base(cat_svg, ysize = .7) }) # Expect error expect_error(add_phylopic_base(img = "cat")) - expect_error(add_phylopic_base(img = cat, verbose = "yes")) - expect_error(add_phylopic_base(cat, name = "cat")) + expect_error(add_phylopic_base(img = cat_svg, verbose = "yes")) + expect_error(add_phylopic_base(cat_svg, name = "cat")) expect_error(add_phylopic_base()) - expect_error(add_phylopic_base(cat, alpha = 3)) + expect_error(add_phylopic_base(cat_svg, alpha = 3)) expect_error(add_phylopic_base(name = 42)) expect_error(add_phylopic_base(uuid = 42)) - expect_error(add_phylopic_base(name = "Felis silvestris catus", - height = 5, width = 5)) + expect_error(add_phylopic_base(cat_svg, height = 5, width = 5)) + expect_error(add_phylopic_base(cat_svg, hjust = 5)) + expect_error(add_phylopic_base(cat_svg, vjust = 5)) }) diff --git a/tests/testthat/test-geom_phylopic.R b/tests/testthat/test-geom_phylopic.R index a2595cf3..41b00519 100644 --- a/tests/testthat/test-geom_phylopic.R +++ b/tests/testthat/test-geom_phylopic.R @@ -79,6 +79,12 @@ test_that("geom_phylopic works", { gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y), img = -5) expect_error(plot(gg)) + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y, uuid = uuid), hjust = 5) + expect_error(plot(gg)) + gg <- ggplot(df) + + geom_phylopic(aes(x = x, y = y, uuid = uuid), vjust = 5) + expect_error(plot(gg)) gg <- ggplot(df) + geom_phylopic(aes(x = x, y = y), name = "asdfghjkl", verbose = TRUE) expect_warning(plot(gg)) From 708b78ea4b781ad285b5f5e68dea6cca2e848914 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 15:38:21 -0400 Subject: [PATCH 16/21] Move NEWS items --- NEWS.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index ab11c2d0..d7f1bc09 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,12 +1,13 @@ # rphylopic (development version) +* Added ability to specify horizontal and vertical justification of silhouettes (#101) +* Added ability to specify width instead of height for silhouettes (#103) + * Note that all "ysize" and "size" arguments/aesthetics are now deprecated in favor of "height" and "width" arguments/aesthetics + # rphylopic 1.4.0 * Added add_phylopic_legend (#83) * Added permalink generation option to get_attribution (#81) -* Added ability to specify horizontal and vertical justification of silhouettes (#101) -* Added ability to specify width instead of height for silhouettes (#103) - * Note that all "ysize" and "size" arguments/aesthetics are now deprecated in favor of "height" and "width" arguments/aesthetics # rphylopic 1.3.0 From dba13db97960768e98c365daf9937fc555a0b11a Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 17:37:50 -0400 Subject: [PATCH 17/21] Add (default) scales for height and width aesthetics --- DESCRIPTION | 3 +- NAMESPACE | 5 +++ R/geom_phylopic.R | 34 ++++++++++++++++ man/scales.Rd | 98 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 man/scales.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 7f6dd2b2..6b618a50 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -36,7 +36,8 @@ Imports: methods, lifecycle, pbapply, - knitr + knitr, + scales Suggests: testthat (>= 3.0.0), vdiffr (>= 1.0.0), diff --git a/NAMESPACE b/NAMESPACE index 07334d57..fc16bcc6 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -25,10 +25,13 @@ export(recolor_phylopic) export(resolve_phylopic) export(rotate_phylopic) export(save_phylopic) +export(scale_height_continuous) +export(scale_width_continuous) importFrom(curl,nslookup) importFrom(ggplot2,Geom) importFrom(ggplot2,aes) importFrom(ggplot2,annotate) +importFrom(ggplot2,continuous_scale) importFrom(ggplot2,coord_equal) importFrom(ggplot2,element_text) importFrom(ggplot2,expansion) @@ -40,6 +43,7 @@ importFrom(ggplot2,layer) importFrom(ggplot2,remove_missing) importFrom(ggplot2,theme) importFrom(ggplot2,theme_void) +importFrom(ggplot2,waiver) importFrom(grDevices,bmp) importFrom(grDevices,col2rgb) importFrom(grDevices,dev.off) @@ -81,6 +85,7 @@ importFrom(pbapply,pblapply) importFrom(png,readPNG) importFrom(rsvg,rsvg_png) importFrom(rsvg,rsvg_svg) +importFrom(scales,pal_area) importFrom(stats,setNames) importFrom(utils,URLdecode) importFrom(utils,URLencode) diff --git a/R/geom_phylopic.R b/R/geom_phylopic.R index acaed088..1673738c 100644 --- a/R/geom_phylopic.R +++ b/R/geom_phylopic.R @@ -499,6 +499,40 @@ phylopicGrob <- function(img, x, y, height, width, return(img_grob) } +#' Scales for phylopic heighgt or width +#' +#' `scale_height_continuous()` scales the height of silhouettes whereas +#' `scale_width_continuous()` scales the height of silhouettes. +#' @inheritParams ggplot2::scale_size_continuous +#' @export +#' @importFrom ggplot2 continuous_scale waiver +#' @importFrom scales pal_area +#' @rdname scales +scale_height_continuous <- function(name = waiver(), breaks = waiver(), labels = waiver(), + limits = NULL, range = c(1, 6), + transform = "identity", + trans = lifecycle::deprecated(), + guide = "none") { + continuous_scale("height", palette = scales::pal_area(range), name = name, + breaks = breaks, labels = labels, limits = limits, + transform = transform, trans = trans, guide = guide) +} + +#' @inheritParams ggplot2::scale_size_continuous +#' @export +#' @importFrom ggplot2 continuous_scale waiver +#' @importFrom scales pal_area +#' @rdname scales +scale_width_continuous <- function(name = waiver(), breaks = waiver(), labels = waiver(), + limits = NULL, range = c(1, 6), + transform = "identity", + trans = lifecycle::deprecated(), + guide = "none") { + continuous_scale("width", palette = scales::pal_area(range), name = name, + breaks = breaks, labels = labels, limits = limits, + transform = transform, trans = trans, guide = guide) +} + #' @importFrom grid grobName ggname <- function(prefix, grob) { # copied from ggplot2 diff --git a/man/scales.Rd b/man/scales.Rd new file mode 100644 index 00000000..18a8cc96 --- /dev/null +++ b/man/scales.Rd @@ -0,0 +1,98 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/geom_phylopic.R +\name{scale_height_continuous} +\alias{scale_height_continuous} +\alias{scale_width_continuous} +\title{Scales for phylopic heighgt or width} +\usage{ +scale_height_continuous( + name = waiver(), + breaks = waiver(), + labels = waiver(), + limits = NULL, + range = c(1, 6), + transform = "identity", + trans = lifecycle::deprecated(), + guide = "none" +) + +scale_width_continuous( + name = waiver(), + breaks = waiver(), + labels = waiver(), + limits = NULL, + range = c(1, 6), + transform = "identity", + trans = lifecycle::deprecated(), + guide = "none" +) +} +\arguments{ +\item{name}{The name of the scale. Used as the axis or legend title. If +\code{waiver()}, the default, the name of the scale is taken from the first +mapping used for that aesthetic. If \code{NULL}, the legend title will be +omitted.} + +\item{breaks}{One of: +\itemize{ +\item \code{NULL} for no breaks +\item \code{waiver()} for the default breaks computed by the +\link[scales:new_transform]{transformation object} +\item A numeric vector of positions +\item A function that takes the limits as input and returns breaks +as output (e.g., a function returned by \code{\link[scales:breaks_extended]{scales::extended_breaks()}}). +Note that for position scales, limits are provided after scale expansion. +Also accepts rlang \link[rlang:as_function]{lambda} function notation. +}} + +\item{labels}{One of: +\itemize{ +\item \code{NULL} for no labels +\item \code{waiver()} for the default labels computed by the +transformation object +\item A character vector giving labels (must be same length as \code{breaks}) +\item An expression vector (must be the same length as breaks). See ?plotmath for details. +\item A function that takes the breaks as input and returns labels +as output. Also accepts rlang \link[rlang:as_function]{lambda} function +notation. +}} + +\item{limits}{One of: +\itemize{ +\item \code{NULL} to use the default scale range +\item A numeric vector of length two providing limits of the scale. +Use \code{NA} to refer to the existing minimum or maximum +\item A function that accepts the existing (automatic) limits and returns +new limits. Also accepts rlang \link[rlang:as_function]{lambda} function +notation. +Note that setting limits on positional scales will \strong{remove} data outside of the limits. +If the purpose is to zoom, use the limit argument in the coordinate system +(see \code{\link[ggplot2:coord_cartesian]{coord_cartesian()}}). +}} + +\item{range}{a numeric vector of length 2 that specifies the minimum and +maximum size of the plotting symbol after transformation.} + +\item{transform}{For continuous scales, the name of a transformation object +or the object itself. Built-in transformations include "asn", "atanh", +"boxcox", "date", "exp", "hms", "identity", "log", "log10", "log1p", "log2", +"logit", "modulus", "probability", "probit", "pseudo_log", "reciprocal", +"reverse", "sqrt" and "time". + +A transformation object bundles together a transform, its inverse, +and methods for generating breaks and labels. Transformation objects +are defined in the scales package, and are called \verb{transform_}. If +transformations require arguments, you can call them from the scales +package, e.g. \code{\link[scales:transform_boxcox]{scales::transform_boxcox(p = 2)}}. +You can create your own transformation with \code{\link[scales:new_transform]{scales::new_transform()}}.} + +\item{trans}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} Deprecated in favour of +\code{transform}.} + +\item{guide}{A function used to create a guide or its name. See +\code{\link[ggplot2:guides]{guides()}} for more information.} +} +\description{ +\code{scale_height_continuous()} scales the height of silhouettes whereas +\code{scale_width_continuous()} scales the height of silhouettes. +} From 0a6a711753977a35d5e41e1d7856b683c12d589a Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 17:38:13 -0400 Subject: [PATCH 18/21] Update and recompile vignettes --- vignettes/a-getting-started.Rmd | 58 ++++++------- vignettes/a-getting-started.Rmd.orig | 20 ++--- vignettes/b-advanced-ggplot.Rmd | 108 ++++++++++++++----------- vignettes/b-advanced-ggplot.Rmd.orig | 47 ++++++----- vignettes/base-phylo-plot-3-1.png | Bin 20696 -> 20742 bytes vignettes/base-phylo-plot-4-1.png | Bin 20945 -> 20991 bytes vignettes/c-advanced-base.Rmd | 64 +++++++-------- vignettes/c-advanced-base.Rmd.orig | 14 ++-- vignettes/ggplot-geog-plot-1-1.png | Bin 30415 -> 29995 bytes vignettes/ggplot-penguin-plot-3-1.png | Bin 46012 -> 37314 bytes vignettes/ggplot-penguin-plot-3b-1.png | Bin 0 -> 44879 bytes vignettes/ggplot-penguin-plot-5-1.png | Bin 46713 -> 46562 bytes vignettes/ggplot-penguin-plot-6-1.png | Bin 48762 -> 46827 bytes vignettes/ggplot-phylo-plot-3-1.png | Bin 34511 -> 34486 bytes vignettes/ggplot-phylo-plot-4-1.png | Bin 34777 -> 34755 bytes 15 files changed, 167 insertions(+), 144 deletions(-) create mode 100644 vignettes/ggplot-penguin-plot-3b-1.png diff --git a/vignettes/a-getting-started.Rmd b/vignettes/a-getting-started.Rmd index 79b8f4a1..d602f025 100644 --- a/vignettes/a-getting-started.Rmd +++ b/vignettes/a-getting-started.Rmd @@ -9,7 +9,7 @@ vignette: > **Authors:** Lewis A. Jones & William Gearty -**Last updated:** 2024-04-23 +**Last updated:** 2024-07-30 @@ -24,14 +24,14 @@ vignette: > The **rphylopic** package can be installed via CRAN or its dedicated [GitHub repository](https://github.com/palaeoverse/rphylopic) if the development version is preferred. To install via CRAN, simply use: -```r +``` r install.packages("rphylopic") ``` To install the development version, first install the `{remotes}` package, and then use `install_github()` to install **rphylopic** directly from GitHub. -```r +``` r install.packages("remotes") remotes::install_github("palaeoverse/rphylopic") ``` @@ -39,22 +39,22 @@ remotes::install_github("palaeoverse/rphylopic") You can now load **rphylopic** using the default `library()` function: -```r +``` r library(rphylopic) ``` **Before we get onto the good stuff, the development team has a small request**. If you use **rphylopic** in your research, please cite the associated publication. This will help us to continue our work in supporting you to do yours. You can access the appropriate citation via: -```r +``` r citation("rphylopic") ``` ``` ## To cite rphylopic in publications, use the following citation: ## -## Gearty, W. and Jones, L.A. 2023. rphylopic: An R package for fetching, transforming, and visualising PhyloPic silhouettes. -## Methods in Ecology and Evolution, 14(11), 2700-2708. doi: 10.1111/2041-210X.14221. +## Gearty, W. and Jones, L.A. 2023. rphylopic: An R package for fetching, transforming, and visualising +## PhyloPic silhouettes. Methods in Ecology and Evolution, 14(11), 2700-2708. doi: 10.1111/2041-210X.14221. ## ## A BibTeX entry for LaTeX users is ## @@ -79,7 +79,7 @@ Every silhouette available via [PhyloPic](https://www.phylopic.org) has a univer ## Get an image uuid -```r +``` r # Load rphylopic library(rphylopic) # Get a single image UUID for a species @@ -95,7 +95,7 @@ uuid <- get_uuid(name = "Canis lupus", n = 5) As multiple silhouettes can exist for a searched name, it can be difficult to pick the correct UUID, especially without visualizing the images. The `pick_phylopic()` function plots all requested silhouettes and provides an interactive menu to allow you to select the right image for you. Let's go with option 1! -```r +``` r # How do I pick?! # It's difficult without seeing the image itself, let's use: img <- pick_phylopic(name = "Canis lupus", n = 4, view = 4) @@ -109,17 +109,17 @@ Now we have selected our silhouette, we can make some plots! Let's start with base R by using `add_phylopic_base()`: -```r +``` r # OK, now we've got the image we want... let's add it to a plot! plot(x = 1, y = 1, type = "n", ann = FALSE) -add_phylopic_base(img = img, x = 1.25, y = 1.25, ysize = 0.25) +add_phylopic_base(img = img, x = 1.25, y = 1.25, height = 0.25) # But can't we just add an image straight away using the UUID? Sure! uuid <- get_uuid(name = "Canis lupus", n = 1) -add_phylopic_base(uuid = uuid, x = 1, y = 1, ysize = 0.25) +add_phylopic_base(uuid = uuid, x = 1, y = 1, height = 0.25) # What about just using the first image linked to the name? Definitely! -add_phylopic_base(name = "Canis lupus", x = 0.75, y = 0.75, ysize = 0.25) +add_phylopic_base(name = "Canis lupus", x = 0.75, y = 0.75, height = 0.25) ```
@@ -133,18 +133,18 @@ Ah, you've found out our little secret! You can actually skip the steps of getti You can also accomplish the same plot with the `{ggplot2}` package. Here, we'll use the `add_phylopic()` function, but the functionality and all of the arguments are the same: -```r +``` r library(ggplot2) p <- ggplot() + coord_cartesian(xlim = c(0.6, 1.4), ylim = c(0.6, 1.4)) + - add_phylopic(img = img, x = 1.25, y = 1.25, ysize = 0.25) + add_phylopic(img = img, x = 1.25, y = 1.25, height = 0.25) # But can't we just add an image straight away using the UUID? Sure! uuid <- get_uuid(name = "Canis lupus", n = 1) -p <- p + add_phylopic(uuid = uuid, x = 1, y = 1, ysize = 0.25) +p <- p + add_phylopic(uuid = uuid, x = 1, y = 1, height = 0.25) # What about just using the first image linked to the name? Definitely! -p + add_phylopic(name = "Canis lupus", x = 0.75, y = 0.75, ysize = 0.25) +p + add_phylopic(name = "Canis lupus", x = 0.75, y = 0.75, height = 0.25) ```
@@ -158,7 +158,7 @@ Once a silhouette is picked and saved in the your R environment, it may be usefu The `flip_phylopic()` function can be used to flip a silhouette horizontally and/or vertically. This may be useful if, for example, you want all of the silhouettes to face the same direction. -```r +``` r # Flip silhouette horizontally img_flip <- flip_phylopic(img = img, horizontal = TRUE, vertical = FALSE) ``` @@ -166,7 +166,7 @@ img_flip <- flip_phylopic(img = img, horizontal = TRUE, vertical = FALSE) The `rotate_phylopic()` function can be used to rotate a silhouette an arbitrary number of degrees. This may be useful when trying to align a silhouette with text or other objects within a figure. -```r +``` r # Rotate silhouette by 45 degrees img_rot <- rotate_phylopic(img = img, angle = 45) ``` @@ -174,7 +174,7 @@ img_rot <- rotate_phylopic(img = img, angle = 45) Finally, the `recolor_phylopic()` function can be used to modify the fill color, outline color, and/or transparency of a silhouette. The vast majority of PhyloPic silhouettes are solid black, are fully opaque, and have a transparent outline by default. However, it may be useful to change this when the you are trying to either match an existing visualization color palette or trying to convey extra information, such as categorical data, through color. -```r +``` r # Change fill color to blue and transparency to 50% img_col <- recolor_phylopic(img = img, alpha = 0.5, fill = "blue") ``` @@ -182,12 +182,12 @@ img_col <- recolor_phylopic(img = img, alpha = 0.5, fill = "blue") Let's see what those look like in the same plot: -```r +``` r ggplot() + coord_cartesian(xlim = c(0.6, 1.4), ylim = c(0.6, 1.4)) + - add_phylopic(img = img_flip, x = 1.25, y = 1.25, ysize = 0.25) + - add_phylopic(img = img_rot, x = 1, y = 1, ysize = 0.25) + - add_phylopic(img = img_col, x = 0.75, y = 0.75, ysize = 0.25, + add_phylopic(img = img_flip, x = 1.25, y = 1.25, height = 0.25) + + add_phylopic(img = img_rot, x = 1, y = 1, height = 0.25) + + add_phylopic(img = img_col, x = 0.75, y = 0.75, height = 0.25, fill = "original") ``` @@ -196,7 +196,7 @@ ggplot() +

plot of chunk intro-transform-plot

-You'll notice that the rotated silhouette is smaller than the other two silhouettes. This is because our functions have arguments to specify the height (`ysize`). The width is automatically set to maintain the original aspect ratio of the silhouette. In this case, the aspect ratio of the rotated silhouette has changed, so the same height results in a smaller silhouette overall. +You'll notice that the rotated silhouette is smaller than the other two silhouettes. This is because we've specifed the `height` of our silhouettes. The width is then automatically set to maintain the original aspect ratio of the silhouette. In this case, the aspect ratio of the rotated silhouette has changed, so the same `height` results in a smaller silhouette overall. If you'd prefer, you could also specify the `width` of the silhouettes. For convenience, we have also included these transformation options within all of the visualization functions. The default fill is "black", hence why we needed to specify `fill = "original"` above. However, when the same transformed silhouette will be used for multiple visualizations, we suggest transforming the silhouette first, saving it as a new object, then using this new object for visualization purposes. @@ -204,7 +204,7 @@ For convenience, we have also included these transformation options within all o Now that you've made a plot and used some silhouettes, you should acknowledge the contributors that made those silhouettes. Fortunately, **rphylopic** includes the `get_attribution()` function to get contributor data about specific images: -```r +``` r # Get valid uuid uuid <- get_uuid(name = "Nycticebus") # Get attribution data for uuid @@ -242,7 +242,7 @@ get_attribution(uuid = uuid) This function can even write a little blurb for you to include in your publications: -```r +``` r # Get valid uuid uuid <- get_uuid(name = "Nycticebus") # Get attribution data for uuid @@ -250,14 +250,14 @@ get_attribution(uuid = uuid, text = TRUE) ``` ``` -## Organism silhouettes are from PhyloPic (https://www.phylopic.org/; T. Michael Keesey, 2023) and were added using the rphylopic R package ver. 1.3.0.9000 (Gearty & Jones, 2023). Silhouette was made by Mareike C. Janiak, 2020 (Public Domain Mark 1.0). Silhouette was contributed by Mareike Janiak. +## Organism silhouettes are from PhyloPic (https://www.phylopic.org/; T. Michael Keesey, 2023) and were added using the rphylopic R package ver. 1.4.0.9000 (Gearty & Jones, 2023). Silhouette was made by Mareike C. Janiak, 2020 (Public Domain Mark 1.0). Silhouette was contributed by Mareike Janiak. ``` ## Save an image You should be able to accomplish all of your visualization needs within R (see our other vignettes for examples), but in the rare case that need to use a silhouette outside of R, we've also got you covered with the `save_phylopic()` function. You can save silhouettes in a range of formats, including: Portable Document Format (PDF), Portable Network Graphics (PNG), Scale Vector Graphics (SVG), Tag Image File Format (TIFF), Joint Photographic Experts Group (JPEG), and bitmap (BMP). -```r +``` r # How do I save an image? # Get image img <- pick_phylopic(name = "Phascolarctos cinereus", n = 1) diff --git a/vignettes/a-getting-started.Rmd.orig b/vignettes/a-getting-started.Rmd.orig index 346f3ce7..c852581d 100644 --- a/vignettes/a-getting-started.Rmd.orig +++ b/vignettes/a-getting-started.Rmd.orig @@ -89,14 +89,14 @@ Let's start with base R by using `add_phylopic_base()`: ```{r intro-base-plot, warning = FALSE} # OK, now we've got the image we want... let's add it to a plot! plot(x = 1, y = 1, type = "n", ann = FALSE) -add_phylopic_base(img = img, x = 1.25, y = 1.25, ysize = 0.25) +add_phylopic_base(img = img, x = 1.25, y = 1.25, height = 0.25) # But can't we just add an image straight away using the UUID? Sure! uuid <- get_uuid(name = "Canis lupus", n = 1) -add_phylopic_base(uuid = uuid, x = 1, y = 1, ysize = 0.25) +add_phylopic_base(uuid = uuid, x = 1, y = 1, height = 0.25) # What about just using the first image linked to the name? Definitely! -add_phylopic_base(name = "Canis lupus", x = 0.75, y = 0.75, ysize = 0.25) +add_phylopic_base(name = "Canis lupus", x = 0.75, y = 0.75, height = 0.25) ``` Ah, you've found out our little secret! You can actually skip the steps of getting the UUID altogether by just searching for the desired taxon in `add_phylopic_base()`. However, this will always return the first matched silhouette meaning you might be missing out on all the other options! It's always worth checking out your options with `pick_phylopic()` first. @@ -108,14 +108,14 @@ You can also accomplish the same plot with the `{ggplot2}` package. Here, we'll library(ggplot2) p <- ggplot() + coord_cartesian(xlim = c(0.6, 1.4), ylim = c(0.6, 1.4)) + - add_phylopic(img = img, x = 1.25, y = 1.25, ysize = 0.25) + add_phylopic(img = img, x = 1.25, y = 1.25, height = 0.25) # But can't we just add an image straight away using the UUID? Sure! uuid <- get_uuid(name = "Canis lupus", n = 1) -p <- p + add_phylopic(uuid = uuid, x = 1, y = 1, ysize = 0.25) +p <- p + add_phylopic(uuid = uuid, x = 1, y = 1, height = 0.25) # What about just using the first image linked to the name? Definitely! -p + add_phylopic(name = "Canis lupus", x = 0.75, y = 0.75, ysize = 0.25) +p + add_phylopic(name = "Canis lupus", x = 0.75, y = 0.75, height = 0.25) ``` ## Transforming silhouettes @@ -147,13 +147,13 @@ Let's see what those look like in the same plot: ```{r intro-transform-plot} ggplot() + coord_cartesian(xlim = c(0.6, 1.4), ylim = c(0.6, 1.4)) + - add_phylopic(img = img_flip, x = 1.25, y = 1.25, ysize = 0.25) + - add_phylopic(img = img_rot, x = 1, y = 1, ysize = 0.25) + - add_phylopic(img = img_col, x = 0.75, y = 0.75, ysize = 0.25, + add_phylopic(img = img_flip, x = 1.25, y = 1.25, height = 0.25) + + add_phylopic(img = img_rot, x = 1, y = 1, height = 0.25) + + add_phylopic(img = img_col, x = 0.75, y = 0.75, height = 0.25, fill = "original") ``` -You'll notice that the rotated silhouette is smaller than the other two silhouettes. This is because our functions have arguments to specify the height (`ysize`). The width is automatically set to maintain the original aspect ratio of the silhouette. In this case, the aspect ratio of the rotated silhouette has changed, so the same height results in a smaller silhouette overall. +You'll notice that the rotated silhouette is smaller than the other two silhouettes. This is because we've specifed the `height` of our silhouettes. The width is then automatically set to maintain the original aspect ratio of the silhouette. In this case, the aspect ratio of the rotated silhouette has changed, so the same `height` results in a smaller silhouette overall. If you'd prefer, you could also specify the `width` of the silhouettes. For convenience, we have also included these transformation options within all of the visualization functions. The default fill is "black", hence why we needed to specify `fill = "original"` above. However, when the same transformed silhouette will be used for multiple visualizations, we suggest transforming the silhouette first, saving it as a new object, then using this new object for visualization purposes. diff --git a/vignettes/b-advanced-ggplot.Rmd b/vignettes/b-advanced-ggplot.Rmd index f158d136..557f8d5c 100644 --- a/vignettes/b-advanced-ggplot.Rmd +++ b/vignettes/b-advanced-ggplot.Rmd @@ -9,7 +9,7 @@ vignette: > **Authors:** William Gearty & Lewis A. Jones -**Last updated:** 2024-04-23 +**Last updated:** 2024-07-30 @@ -26,7 +26,7 @@ The **rphylopic** package provides robust and flexible tools to access and trans First, let's load our libraries and the penguin data: -```r +``` r # Load libraries library(rphylopic) library(ggplot2) @@ -39,7 +39,7 @@ penguins_subset <- subset(penguins, !is.na(sex)) Now, let's pick a silhouette to use for the penguins. Let's pick #2: -```r +``` r # Pick a silhouette for Pygoscelis (here we pick #2) penguin <- pick_phylopic("Pygoscelis", n = 3, view = 3) ``` @@ -49,7 +49,7 @@ penguin <- pick_phylopic("Pygoscelis", n = 3, view = 3) You may have noticed in the preview that the silhouette was a little slanted. Let's rotate it clockwise just a smidgen: -```r +``` r # It's a little slanted, so let's rotate it a little bit penguin_rot <- rotate_phylopic(img = penguin, angle = 15) ``` @@ -57,7 +57,7 @@ penguin_rot <- rotate_phylopic(img = penguin, angle = 15) Now, let's draft the plot that we want to make. In this case, let's plot the penguins' bill lengths vs. their flipper lengths: -```r +``` r ggplot(penguins_subset) + geom_point(aes(x = bill_length_mm, y = flipper_length_mm)) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + @@ -70,14 +70,14 @@ ggplot(penguins_subset) +

plot of chunk ggplot-penguin-plot-1

-That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. We'll use the `geom_phylopic()` function, which will require us to make a `data.frame`. Note that the `x` and `y` aesthetics specify the center of the silhouette, and the `size` argument specifies how tall the silhouette is in the units of the y-axis. +That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. We'll use the `geom_phylopic()` function, which will require us to make a `data.frame`. Note that the `x` and `y` aesthetics specify the center of the silhouette, and the `height` argument specifies how tall the silhouette is in the units of the y-axis. -```r +``` r silhouette_df <- data.frame(x = 59, y = 215, species = "Adelie") ggplot(penguins_subset) + geom_point(aes(x = bill_length_mm, y = flipper_length_mm)) + - geom_phylopic(data = silhouette_df, aes(x = x, y = y), size = 30, + geom_phylopic(data = silhouette_df, aes(x = x, y = y), height = 30, img = penguin_rot) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + facet_wrap(~species, ncol = 1) + @@ -92,7 +92,7 @@ ggplot(penguins_subset) + Isn't that nifty! We can go a step further, though. What if we used little penguins instead of points?! To do that, we can use the `geom_phylopic()` function instead of the `geom_point()` function (in this case, we want to use the same image for each x-y pair): -```r +``` r ggplot(penguins_subset) + geom_phylopic(img = penguin_rot, aes(x = bill_length_mm, y = flipper_length_mm)) + @@ -106,14 +106,31 @@ ggplot(penguins_subset) +

plot of chunk ggplot-penguin-plot-3

-The default silhouette size for `geom_phylopic()` is 1.5 which appears to work well given the range of the y-axis here. However, we can also vary the size based on some other aspect of data. In this case, let's try making the size of the silhouettes relative to the penguins' body masses. `{ggplot2}` should work its magic and make them reasonable sizes for the plot: +The default silhouette size for `geom_phylopic()` is as large as will fit within the plot area. That won't work well here. Instead, we can specify a `height` or `width` to use (in y-axis or x-axis units, respectively): -```r +``` r +ggplot(penguins_subset) + + geom_phylopic(img = penguin_rot, + aes(x = bill_length_mm, y = flipper_length_mm), height = 5) + + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + + facet_wrap(~species, ncol = 1) + + theme_bw(base_size = 15) +``` + +
+plot of chunk ggplot-penguin-plot-3b +

plot of chunk ggplot-penguin-plot-3b

+
+ +Alternatively, we can vary the height based on some other aspect of data, and the values will be automatically scaled for us. In this case, let's try making the size of the silhouettes relative to the penguins' body masses. Behind the scenes, __rphylopic__ will work its magic and rescale them to values between 1 and 6. Note that, depending on your own data, you may want to customize how the values are scaled by using `scale_height_continuous()` (or `scale_width_continuous()` if you are using the `width` aesthetic) just as you would use `scale_size_continuous()`. We'll just use the defaults here: + + +``` r ggplot(penguins_subset) + geom_phylopic(img = penguin_rot, aes(x = bill_length_mm, y = flipper_length_mm, - size = body_mass_g)) + + height = body_mass_g)) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + facet_wrap(~species, ncol = 1) + theme_bw(base_size = 15) @@ -124,14 +141,14 @@ ggplot(penguins_subset) +

plot of chunk ggplot-penguin-plot-4

-Finally, let's give the female and male penguins different fill colors. Note that the default for `geom_phylopic()` is to not display a legend, so we need to set `show.legend = TRUE`. However, we only want a legend for the fill colors, so we use `guide = "none"` for the size scale. We also want to show the fill color in the legend, so we need to override the shape: +Nice! Finally, let's give the female and male penguins different fill colors. Note that the default for `geom_phylopic()` is to not display a legend, so we need to set `show.legend = TRUE`. However, we only want a legend for the fill colors, so we use `guide = "none"` for the size scale. We also want to show the fill color in the legend, so we need to override the shape: -```r +``` r ggplot(penguins_subset) + geom_phylopic(img = penguin_rot, aes(x = bill_length_mm, y = flipper_length_mm, - size = body_mass_g, fill = sex), + height = body_mass_g, fill = sex), show.legend = TRUE) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + scale_size_continuous(guide = "none") + @@ -140,7 +157,7 @@ ggplot(penguins_subset) + guide = guide_legend(override.aes = list(shape = 21))) + facet_wrap(~species, ncol = 1) + theme_bw(base_size = 15) + - theme(legend.position = c(0.9, 0.9)) + theme(legend.position = "inside", legend.position.inside = c(0.9, 0.9)) ```
@@ -148,14 +165,14 @@ ggplot(penguins_subset) +

plot of chunk ggplot-penguin-plot-5

-Hmm...the colored dots in the legend are great, but lucky for us, the package also supplies a convenient way to include silhouettes in the legend. Due to technical constraints, you'll need to specify the images/uuids/names again within `phylopic_key_glyph()`. If you supply more than one silhouette to this function, it will cycle through them as it generates legend keys (recycling as needed). Note that `phylopic_key_glyph()` does not currently support the size aesthetic. +Hmm...the colored dots in the legend are great, but lucky for us, the package also supplies a convenient way to include silhouettes in the legend. Due to technical constraints, you'll need to specify the images/uuids/names again within `phylopic_key_glyph()`. If you supply more than one silhouette to this function, it will cycle through them as it generates legend keys (recycling as needed). Note that `phylopic_key_glyph()` does not currently support the `height`/`width` aesthetics. -```r +``` r ggplot(penguins_subset) + geom_phylopic(img = penguin_rot, aes(x = bill_length_mm, y = flipper_length_mm, - size = body_mass_g, fill = sex), + height = body_mass_g, fill = sex), show.legend = TRUE, key_glyph = phylopic_key_glyph(img = penguin_rot)) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + @@ -164,7 +181,7 @@ ggplot(penguins_subset) + labels = c("Female", "Male")) + facet_wrap(~species, ncol = 1) + theme_bw(base_size = 15) + - theme(legend.position.inside = c(0.9, 0.9)) + theme(legend.position = "inside", legend.position.inside = c(0.9, 0.9)) ```
@@ -180,7 +197,7 @@ In much the same way as generic x-y plotting, the **rphylopic** package can be u First, let's load our libraries and the tetrapod data: -```r +``` r # Load libraries library(rphylopic) library(ggplot2) @@ -194,7 +211,7 @@ data(tetrapods) Then we'll subset our occurrences to only those for *Diplocaulus*: -```r +``` r # Subset to desired group tetrapods <- subset(tetrapods, genus == "Diplocaulus") ``` @@ -202,7 +219,7 @@ tetrapods <- subset(tetrapods, genus == "Diplocaulus") Now, let's plot those occurrences on a world map. `{ggplot2}` and it's built-in function `map_data()` make this a breeze. Note that we use `alpha = 0.75` in case there are multiple occurrences in the same place. That way, the darker the fill color, the more occurrences in that geographic location. -```r +``` r # Get map data world <- st_as_sf(map("world", fill = TRUE, plot = FALSE)) world <- st_wrap_dateline(world) @@ -210,7 +227,7 @@ world <- st_wrap_dateline(world) ggplot(world) + geom_sf(fill = "lightgray", color = "darkgrey", linewidth = 0.1) + geom_point(data = tetrapods, aes(x = lng, y = lat), - size = 4, alpha = 0.75, fill = "blue") + + height = 4, alpha = 0.75, fill = "blue") + theme_void() + coord_sf() ``` @@ -223,11 +240,11 @@ ggplot(world) + Now, as with the penguin figure above, we can easily replace those points with silhouettes. -```r +``` r ggplot(world) + geom_sf(fill = "lightgray", color = "darkgrey", linewidth = 0.1) + geom_phylopic(data = tetrapods, aes(x = lng, y = lat, name = genus), - size = 4, alpha = 0.75, fill = "blue") + + height = 4, alpha = 0.75, fill = "blue") + theme_void() + coord_sf() ``` @@ -241,17 +258,17 @@ Snazzy! Note that while we used the genus name as the `name` aesthetic here, we easily could have done `name = "Diplocaulus"` outside of the `aes()` call instead. However, if we were plotting occurrences of multiple genera, we'd definitely want to plot them as different silhouettes using `name = genus` within the `aes()` call. -Also, note that we could change the projection of the map and data using the `crs` and `default_crs` arguments in `coord_sf()`. When projecting data, note that the y-axis limits will change to projected limits. For example, in the Robinson projection, the y-axis limits are roughly -8,600,000 and 8,600,000 in projected coordinates. Therefore, you may need to adjust the `size` argument/aesthetic accordingly when projecting maps and data. +Also, note that we could change the projection of the map and data using the `crs` and `default_crs` arguments in `coord_sf()`. When projecting data, note that the y-axis limits will change to projected limits. For example, in the Robinson projection, the y-axis limits are roughly -8,600,000 and 8,600,000 in projected coordinates. Therefore, you may need to adjust the `height` argument/aesthetic accordingly when projecting maps and data. -```r +``` r # Set up a bounding box bbox <- st_graticule(crs = st_crs("ESRI:54030"), lat = c(-89.9, 89.9), lon = c(-179.9, 179.9)) ggplot(world) + geom_sf(fill = "lightgray", color = "darkgrey", linewidth = 0.1) + geom_phylopic(data = tetrapods, aes(x = lng, y = lat, name = genus), - size = 4E5, alpha = 0.75, fill = "blue") + + height = 4E5, alpha = 0.75, fill = "blue") + geom_sf(data = bbox) + theme_void() + coord_sf(default_crs = st_crs(4326), crs = st_crs("ESRI:54030")) @@ -266,7 +283,7 @@ ggplot(world) + Another common use case of PhyloPic silhouettes is to represent taxonomic information. In this example, we demonstrate how to use silhouettes within a phylogenetic framework. In this case, the phylogeny, taken from the `{phytools}` package, includes taxa across all vertebrates. Even many taxonomic experts are unlikely to know the scientific names of these 11 disparate taxa, so we'll replace the names with PhyloPic silhouettes. First, let's load our libraries and data: -```r +``` r # Load libraries library(rphylopic) library(ggplot2) @@ -278,7 +295,7 @@ data(vertebrate.tree) We can use a vectorized version of the `get_uuid()` function to retrieve UUID values for all of the species at once. However, just in case we get an error, we wrap the `get_uuid()` call in a `tryCatch()` call. This way, we should get either a UUID or `NA` for each species: -```r +``` r # Make a data.frame for the PhyloPic names vertebrate_data <- data.frame(species = vertebrate.tree$tip.label, uuid = NA) # Try to get PhyloPic UUIDs for the species names @@ -292,7 +309,7 @@ vertebrate_data ``` ## species uuid ## 1 Carcharodon_carcharias 00f208a3-887d-4ae8-838c-2124f53b9fc1 -## 2 Carassius_auratus b1995423-0170-4ff1-af49-1cdf692d8fc7 +## 2 Carassius_auratus ace2b280-abe8-4dce-96db-be4e393f836d ## 3 Latimeria_chalumnae 12c38a8a-6d68-4af3-ada3-05cafdfc25c2 ## 4 Homo_sapiens 9c6af553-390c-4bdd-baeb-6992cbc540b1 ## 5 Lemur_catta 8a187391-82a3-4d9b-a402-3a310bf7dc38 @@ -307,7 +324,7 @@ vertebrate_data Oh no, we weren't able to find a silhouette for *Myotis lucifugus* (little brown bat)! Good thing we used `tryCatch()`! Given the coarse resolution of this phylogeny, we can just grab a silhouette for the subfamily (Vespertilioninae): -```r +``` r vertebrate_data$uuid[vertebrate_data$species == "Myotis_lucifugus"] <- get_uuid("Vespertilioninae") ``` @@ -315,7 +332,7 @@ vertebrate_data$uuid[vertebrate_data$species == "Myotis_lucifugus"] <- I'm also not a huge fan of the boar picture. Let's choose an alternative with `pick_phylopic()`. -```r +``` r # Pick a different boar image; we'll pick #2 boar_svg <- pick_phylopic("Sus scrofa", view = 5) # Extract the UUID @@ -328,14 +345,14 @@ vertebrate_data$uuid[vertebrate_data$species == "Sus_scrofa"] <- Now that we've got our phylogeny and UUIDs, we could go ahead and create our figure. However, time for a quick aside. The time required for `geom_phylopic()` and the other **rphylopic** visualization functions scales with the number of *unique* names/UUIDs, not the number of plotted silhouettes. Therefore, if you are plotting a lot of *different* silhouettes, these functions can take quite a long time to poll PhyloPic for each unique name, download the silhouettes, and convert them to be added to the plot. If you plan to use the same silhouettes for multiple figures, we strongly suggest that you poll PhyloPic yourself using `get_phylopic()` or `pick_phylopic()`, save the silhouettes to your R environment, and then these use image objects in the visualization functions (with the `img` argument/aesthetic). Following this advice, let's get image objects for these 11 species before we make our figure. Note that, since we've used `get_uuid()` to get these 11 UUIDs, we know that they are valid, so we don't need to catch any errors this time. -```r +``` r vertebrate_data$svg <- lapply(vertebrate_data$uuid, get_phylopic) ``` Now let's go ahead and plot our phylogeny with the [ggtree](https://www.bioconductor.org/packages/ggtree) package: -```r +``` r library(ggtree) # Plot the tree ggtree(vertebrate.tree, size = 1, layout = "circular") @@ -349,7 +366,7 @@ ggtree(vertebrate.tree, size = 1, layout = "circular") Hmm...that's a bit boring. Let's add a geological timescale to the background using `coord_geo_polar()` from the `{deeptime}` package. Note that we need to use the `revts()` function to reverse the time axis to work with `coord_geo_polar()`. -```r +``` r library(deeptime) # Plot the tree with a geological timescale in the background revts(ggtree(vertebrate.tree, size = 1)) + @@ -362,11 +379,6 @@ revts(ggtree(vertebrate.tree, size = 1)) + theme_classic() ``` -``` -## Scale for y is already present. -## Adding another scale for y, which will replace the existing scale. -``` -
plot of chunk ggplot-phylo-plot-2

plot of chunk ggplot-phylo-plot-2

@@ -375,9 +387,9 @@ revts(ggtree(vertebrate.tree, size = 1)) + That's looking a lot prettier! Let's go ahead and add our silhouettes now. Note that we need to attach the `vertebrate_data` object with the `%<+%` operator from `{ggtree}`. -```r +``` r revts(ggtree(vertebrate.tree, size = 1)) %<+% vertebrate_data + - geom_phylopic(aes(img = svg), size = 25) + + geom_phylopic(aes(img = svg), height = 25) + scale_x_continuous(breaks = seq(-500, 0, 100), labels = seq(500, 0, -100), limits = c(-500, 0), @@ -392,10 +404,10 @@ revts(ggtree(vertebrate.tree, size = 1)) %<+% vertebrate_data +

plot of chunk ggplot-phylo-plot-3

-Note that only a single size is specified and aspect ratio is always maintained, hence why the silhouettes all have the same height but different widths. Let's fix some of the silhouettes by rotating them 90 degrees: +Note that only a single height is specified and aspect ratio is always maintained, hence why the silhouettes all have the same height but different widths. Let's fix some of the silhouettes by rotating them 90 degrees: -```r +``` r vertebrate_data$svg[[1]] <- rotate_phylopic(img = vertebrate_data$svg[[1]]) vertebrate_data$svg[[8]] <- rotate_phylopic(img = vertebrate_data$svg[[8]]) ``` @@ -403,9 +415,9 @@ vertebrate_data$svg[[8]] <- rotate_phylopic(img = vertebrate_data$svg[[8]]) And now the finished product: -```r +``` r revts(ggtree(vertebrate.tree, size = 1)) %<+% vertebrate_data + - geom_phylopic(aes(img = svg), size = 25) + + geom_phylopic(aes(img = svg), height = 25) + scale_x_continuous(breaks = seq(-500, 0, 100), labels = seq(500, 0, -100), limits = c(-500, 0), diff --git a/vignettes/b-advanced-ggplot.Rmd.orig b/vignettes/b-advanced-ggplot.Rmd.orig index 5d78cfc4..310f4807 100644 --- a/vignettes/b-advanced-ggplot.Rmd.orig +++ b/vignettes/b-advanced-ggplot.Rmd.orig @@ -67,13 +67,13 @@ ggplot(penguins_subset) + theme_bw(base_size = 15) ``` -That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. We'll use the `geom_phylopic()` function, which will require us to make a `data.frame`. Note that the `x` and `y` aesthetics specify the center of the silhouette, and the `size` argument specifies how tall the silhouette is in the units of the y-axis. +That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. We'll use the `geom_phylopic()` function, which will require us to make a `data.frame`. Note that the `x` and `y` aesthetics specify the center of the silhouette, and the `height` argument specifies how tall the silhouette is in the units of the y-axis. ```{r ggplot-penguin-plot-2} silhouette_df <- data.frame(x = 59, y = 215, species = "Adelie") ggplot(penguins_subset) + geom_point(aes(x = bill_length_mm, y = flipper_length_mm)) + - geom_phylopic(data = silhouette_df, aes(x = x, y = y), size = 30, + geom_phylopic(data = silhouette_df, aes(x = x, y = y), height = 30, img = penguin_rot) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + facet_wrap(~species, ncol = 1) + @@ -91,25 +91,36 @@ ggplot(penguins_subset) + theme_bw(base_size = 15) ``` -The default silhouette size for `geom_phylopic()` is 1.5 which appears to work well given the range of the y-axis here. However, we can also vary the size based on some other aspect of data. In this case, let's try making the size of the silhouettes relative to the penguins' body masses. `{ggplot2}` should work its magic and make them reasonable sizes for the plot: +The default silhouette size for `geom_phylopic()` is as large as will fit within the plot area. That won't work well here. Instead, we can specify a `height` or `width` to use (in y-axis or x-axis units, respectively): + +```{r ggplot-penguin-plot-3b} +ggplot(penguins_subset) + + geom_phylopic(img = penguin_rot, + aes(x = bill_length_mm, y = flipper_length_mm), height = 5) + + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + + facet_wrap(~species, ncol = 1) + + theme_bw(base_size = 15) +``` + +Alternatively, we can vary the height based on some other aspect of data, and the values will be automatically scaled for us. In this case, let's try making the size of the silhouettes relative to the penguins' body masses. Behind the scenes, __rphylopic__ will work its magic and rescale them to values between 1 and 6. Note that, depending on your own data, you may want to customize how the values are scaled by using `scale_height_continuous()` (or `scale_width_continuous()` if you are using the `width` aesthetic) just as you would use `scale_size_continuous()`. We'll just use the defaults here: ```{r ggplot-penguin-plot-4} ggplot(penguins_subset) + geom_phylopic(img = penguin_rot, aes(x = bill_length_mm, y = flipper_length_mm, - size = body_mass_g)) + + height = body_mass_g)) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + facet_wrap(~species, ncol = 1) + theme_bw(base_size = 15) ``` -Finally, let's give the female and male penguins different fill colors. Note that the default for `geom_phylopic()` is to not display a legend, so we need to set `show.legend = TRUE`. However, we only want a legend for the fill colors, so we use `guide = "none"` for the size scale. We also want to show the fill color in the legend, so we need to override the shape: +Nice! Finally, let's give the female and male penguins different fill colors. Note that the default for `geom_phylopic()` is to not display a legend, so we need to set `show.legend = TRUE`. However, we only want a legend for the fill colors, so we use `guide = "none"` for the size scale. We also want to show the fill color in the legend, so we need to override the shape: ```{r ggplot-penguin-plot-5} ggplot(penguins_subset) + geom_phylopic(img = penguin_rot, aes(x = bill_length_mm, y = flipper_length_mm, - size = body_mass_g, fill = sex), + height = body_mass_g, fill = sex), show.legend = TRUE) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + scale_size_continuous(guide = "none") + @@ -118,16 +129,16 @@ ggplot(penguins_subset) + guide = guide_legend(override.aes = list(shape = 21))) + facet_wrap(~species, ncol = 1) + theme_bw(base_size = 15) + - theme(legend.position = c(0.9, 0.9)) + theme(legend.position = "inside", legend.position.inside = c(0.9, 0.9)) ``` -Hmm...the colored dots in the legend are great, but lucky for us, the package also supplies a convenient way to include silhouettes in the legend. Due to technical constraints, you'll need to specify the images/uuids/names again within `phylopic_key_glyph()`. If you supply more than one silhouette to this function, it will cycle through them as it generates legend keys (recycling as needed). Note that `phylopic_key_glyph()` does not currently support the size aesthetic. +Hmm...the colored dots in the legend are great, but lucky for us, the package also supplies a convenient way to include silhouettes in the legend. Due to technical constraints, you'll need to specify the images/uuids/names again within `phylopic_key_glyph()`. If you supply more than one silhouette to this function, it will cycle through them as it generates legend keys (recycling as needed). Note that `phylopic_key_glyph()` does not currently support the `height`/`width` aesthetics. ```{r ggplot-penguin-plot-6} ggplot(penguins_subset) + geom_phylopic(img = penguin_rot, aes(x = bill_length_mm, y = flipper_length_mm, - size = body_mass_g, fill = sex), + height = body_mass_g, fill = sex), show.legend = TRUE, key_glyph = phylopic_key_glyph(img = penguin_rot)) + labs(x = "Bill length (mm)", y = "Flipper length (mm)") + @@ -136,7 +147,7 @@ ggplot(penguins_subset) + labels = c("Female", "Male")) + facet_wrap(~species, ncol = 1) + theme_bw(base_size = 15) + - theme(legend.position.inside = c(0.9, 0.9)) + theme(legend.position = "inside", legend.position.inside = c(0.9, 0.9)) ``` Now that's a nice figure! @@ -174,7 +185,7 @@ world <- st_wrap_dateline(world) ggplot(world) + geom_sf(fill = "lightgray", color = "darkgrey", linewidth = 0.1) + geom_point(data = tetrapods, aes(x = lng, y = lat), - size = 4, alpha = 0.75, fill = "blue") + + height = 4, alpha = 0.75, fill = "blue") + theme_void() + coord_sf() ``` @@ -185,7 +196,7 @@ Now, as with the penguin figure above, we can easily replace those points with s ggplot(world) + geom_sf(fill = "lightgray", color = "darkgrey", linewidth = 0.1) + geom_phylopic(data = tetrapods, aes(x = lng, y = lat, name = genus), - size = 4, alpha = 0.75, fill = "blue") + + height = 4, alpha = 0.75, fill = "blue") + theme_void() + coord_sf() ``` @@ -194,7 +205,7 @@ Snazzy! Note that while we used the genus name as the `name` aesthetic here, we easily could have done `name = "Diplocaulus"` outside of the `aes()` call instead. However, if we were plotting occurrences of multiple genera, we'd definitely want to plot them as different silhouettes using `name = genus` within the `aes()` call. -Also, note that we could change the projection of the map and data using the `crs` and `default_crs` arguments in `coord_sf()`. When projecting data, note that the y-axis limits will change to projected limits. For example, in the Robinson projection, the y-axis limits are roughly -8,600,000 and 8,600,000 in projected coordinates. Therefore, you may need to adjust the `size` argument/aesthetic accordingly when projecting maps and data. +Also, note that we could change the projection of the map and data using the `crs` and `default_crs` arguments in `coord_sf()`. When projecting data, note that the y-axis limits will change to projected limits. For example, in the Robinson projection, the y-axis limits are roughly -8,600,000 and 8,600,000 in projected coordinates. Therefore, you may need to adjust the `height` argument/aesthetic accordingly when projecting maps and data. ```{r ggplot-geog-plot-3, fig.height = 3.5, warning = FALSE} # Set up a bounding box @@ -203,7 +214,7 @@ bbox <- st_graticule(crs = st_crs("ESRI:54030"), ggplot(world) + geom_sf(fill = "lightgray", color = "darkgrey", linewidth = 0.1) + geom_phylopic(data = tetrapods, aes(x = lng, y = lat, name = genus), - size = 4E5, alpha = 0.75, fill = "blue") + + height = 4E5, alpha = 0.75, fill = "blue") + geom_sf(data = bbox) + theme_void() + coord_sf(default_crs = st_crs(4326), crs = st_crs("ESRI:54030")) @@ -272,7 +283,7 @@ ggtree(vertebrate.tree, size = 1, layout = "circular") Hmm...that's a bit boring. Let's add a geological timescale to the background using `coord_geo_polar()` from the `{deeptime}` package. Note that we need to use the `revts()` function to reverse the time axis to work with `coord_geo_polar()`. -```{r ggplot-phylo-plot-2} +```{r ggplot-phylo-plot-2, message = FALSE} library(deeptime) # Plot the tree with a geological timescale in the background revts(ggtree(vertebrate.tree, size = 1)) + @@ -289,7 +300,7 @@ That's looking a lot prettier! Let's go ahead and add our silhouettes now. Note ```{r ggplot-phylo-plot-3, message = FALSE, warning = FALSE} revts(ggtree(vertebrate.tree, size = 1)) %<+% vertebrate_data + - geom_phylopic(aes(img = svg), size = 25) + + geom_phylopic(aes(img = svg), height = 25) + scale_x_continuous(breaks = seq(-500, 0, 100), labels = seq(500, 0, -100), limits = c(-500, 0), @@ -299,7 +310,7 @@ revts(ggtree(vertebrate.tree, size = 1)) %<+% vertebrate_data + theme_classic() ``` -Note that only a single size is specified and aspect ratio is always maintained, hence why the silhouettes all have the same height but different widths. Let's fix some of the silhouettes by rotating them 90 degrees: +Note that only a single height is specified and aspect ratio is always maintained, hence why the silhouettes all have the same height but different widths. Let's fix some of the silhouettes by rotating them 90 degrees: ```{r} vertebrate_data$svg[[1]] <- rotate_phylopic(img = vertebrate_data$svg[[1]]) @@ -310,7 +321,7 @@ And now the finished product: ```{r ggplot-phylo-plot-4, message = FALSE, warning = FALSE} revts(ggtree(vertebrate.tree, size = 1)) %<+% vertebrate_data + - geom_phylopic(aes(img = svg), size = 25) + + geom_phylopic(aes(img = svg), height = 25) + scale_x_continuous(breaks = seq(-500, 0, 100), labels = seq(500, 0, -100), limits = c(-500, 0), diff --git a/vignettes/base-phylo-plot-3-1.png b/vignettes/base-phylo-plot-3-1.png index 0e0ffc854ecfa6e57dc5457ff43fa6815cb49a4a..49d1718fb72462c676c3ae7a338546bb227f63be 100644 GIT binary patch delta 9543 zcmYjXc|25K*e4aGP+6+6BqS6e`&J}N*-2ptA=!6k%-j~C1=ZMvLiRQLSjG~vXWxyo z8;o@@Gt7I9-}`xA|G4M4=Q+>v{XWlg&Ncj?)XNGP1 zF9Xk3c_c}1?Cb$?1w5$(sVoRoFW0_dZbwQmr6O^V>5=(=x(p{ZX{;u4nuf$8WXt#kixslGPX2ie@Y>w-tC)p|7l6sFPF zvHWBI1L~wMOt2S3wQ6$P@ww|W^`4}mx#jIoAIb3Q&4z*K8wYtBnoL=!)eO8o`3iMC zQKwz=NLym(`Rx)94mNQ6E3jkq;4c=XS9HZzdUt7o#xLC9nC9LMRI4|qL-ELQ4T)b= zJ8rQ+`%b>2TJ{Y{3u8ThsOYzXwrJ_o2O$>6`sflq9s{*Xj?8dt;T6$JShH-_w7LSpu40(gnSR2v}2Bvg()J zR3~}H&q8W`z6SmLQagHX``ps~Q&f$NBk#Sx4?yl=>7O)+SP3gcG93E*p4htGJ@XAG7sa7)oC%!2it_Ke9$^Xj^_k4+8IhOP!F#B|CttO+=ib+cxlT@p=xfEP z0aM`Ql^@<=KPOs$9J?G+2gdo%(wWkd�+n^s&n=^hf^jZhI!7R_w|zO5mxYT9u}{ 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 diff --git a/vignettes/base-phylo-plot-4-1.png b/vignettes/base-phylo-plot-4-1.png index 475af7a3dab2e2b73948a951a00bc1517a898013..872e582297edb52a399022aabf8d5ef38079e42f 100644 GIT binary patch delta 9962 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 delta 9936 zcmYj%cRbZ!{J&E1u~SmEBvSTX5m}KPm2s2xLGHEJ#hZv!$Q~JGkL-Po8;b0Gb#YyL z@6C1H-`nl;{rDwCz3bpVz}ofYm0uC@u(-ghpF?P97%VeYLfF>nk>YwC+fC<5Cy>AS5It zOF>ZgpxDy4q~Q2OaZH`(z7#lmRhq|X&E*7+etgxH?9`Y7M<} zbI2KQT?ThW$L2z!I~tCHQ9`taALA2c*DU!{n$P(0DWl=@~$ z<>rCg6#e}Qm;pQu-3=%eInm}Ek>zIkm9dxy*rhmzbDJ2Jiv z68dv3)IYT~D-uzn9^KX)K-5ejH0klUX+y2iC604sfA&CUIwx`62hr1W z&8$ZA^y)Kn3^~z^WxW1(uqc#-8-;pJ+rYQcU#tvC66HjWGX`^84-wr1NCWMiv|{~J zoB9ly8$g^H`X+7|%H2g~Ou zSM(K0(&{4{9~c_v0F&GPaP`5{&hTf)UPrJiRmy@ zo&6gb<`3*LzdYh&jXD#fi6IjE$v6AT|EsoH{-<%Gg(?$2$}SH*QQq3} zCqIj##a`8*1qqQ*xa2A1@hzOj{zZ`XVB4$0EW}kJ34L|U%{L52l5dG}jpZ@#1%3Q< z5yaW;6>wKW74r+g=-i(_boKJxxxjoA)}IC1=gQwmRNVVM6;NI(_qgy5lUHcv~U#$rI)mM4!Zc?~n4mJpJ}henT*0FmKJ%G9c43PKl;pN^OgBArgwU5@J%Tfw&48eWbct zOw8%oOrN@Jd6`ICC?tq*CY8UP`u8hlp6LH-1D?}0>%+NyN$?4WO5Zf7ZFpUy^uVc< zX@+V{fO>EYLAUpR!skbSbcdBpH5fkhEE?Qp#Og~wB<|rPMI_5x2rZNli?~2^kYbBi zL@TlMD%R~c?1i*BClWWQUk;yjA{zbk4JI`tF%&)rC`rB_kvdVE0vZ2TuoV%{e-6+R zRl5UZ_P^kJG`l2AjI{S@M0xG3uB!d@p5oqL%J)7>J^9Nq;wxQ=#b4m+bDBt&6CiVE zcS+A=4-h&gCMNgb@wVOhe^ZPn`n&E-n)OXB1rKKXMk4+LE-sib>fh%FdSn z5DlzqYozd6^9Iw$qvAV!i{6rd8-e#)VWF#W19z|JTH8kG_uYHjs)r^pfcCT=s(7&{ z*WWMxM9-V---~4P#K0lth9Q5mLDiZ4o@s>I{ZF9^YG|KJ(o)4Ng+4j?_M-WbwBaBi z3R;38N2D_VELR|W6!#`n-nry`Vj(9XxzoGjL_xHEfK(oH(6`qQKi?ph&j5t*O}-rH zC1R=m?2?@oUQD*4uYQm3o}*PAvF0p~I27@^8QyojuAk3JYMv)q{WPnb zGQhwPO)OzuG1F7c&8sx{@bPK~IqcSb>dA zR;aG@Uq~qSAuNvDriszY;l0vk(RuU_n3)uBmw%LENu(tfDw6kU28JgE9K`5@`5 zyx&$L8nmFaubjYI!z~~DO>^q&r;V4%d*oMIs_rY1(>C>g-jjN=vmC=1LRWn{!V|+r z{;T^WUEv?j2WQO%S!7C&3Lhe+g16WSe)fZ;VUue94P3#cr?Z~i@}ECctu2m*(DnY= ziUBuzon+{Q(8Y^GV)qo)>&51)n3c%chau5>inpDtFbF!O@vhkzHg#>AmPxu6n199h z*(h4T%iE=u^RJId7!+fg@4O&3ge++T*H#J^Aqw7F`@hRrBdeO4N~{+vR!x{!4tb=? z>DSQZ79$H!k$)O3S0fHWbF@>X%T`*@38vBxzR_HoV-aQ*XB$-+a2Cl-zTp&^=?`{X z+AOK}hVqt1n%2kJPDWFarz1`AX6v+1nM_<;=05g)aUM&&LuO>r3*fL^P?`D!KmWSL zpi*3;IM#2I9XK1WF8{=LH?z-wsoeXSA21ooe!O6u#=bS6`$rQ8J!*w)kaKn){V6~) z%VrVGKJ^&%2@uB8=#-v|!O_&eAOwhC9&{JAj$X&g1M3ZF9-4!xkgRnD`JG}+`5 zaEjAuHY3VZ2oL<}u)a0?!|U|b!cL7cIVTllK+L}5r@05L!D6#ToHJOr#^$uZ^$OhS zj^Y%@%S;`}Hn!J9#QRO(reP$DiTsWMrH!Bc$m;kF1s5GA(e^ZcEPkat+yw4#*&b0O z>+!~MqE=1|Ke1CXDN!k^CXAe{=6N%|`_Y}b2gmJ0A!>#qFr z$O;EYSFv9W%$_DD2eYNH(7|H8TUNlOJQ5|D>NorpK3V6}40{>FMytrSqME!Wvt=l? zHEdR2LYcYIu>aj*7RQLgWNS_$UbPC3Xha5q{pUO05$(G2`SSZasBq;^DP=3=vL-e< zyj@?P0M)kmecSmW=FmUR*m8s>YLma~eMYt8E+r$OXJcVXdF5wA*|y*&QXYm`vLAJ= z0sQc7#$BR!5P358?z5qd7*c&TjCv92DCTs|O!(|0evcXQ9Pd9E#9?9NMEC8Uu|%pu z=5E($P0>WT^ZKr!{>xKQQUYP>q$r=BDO zpsf>9TxX67BHl5<4>!E+x(aZ{*cz^2x@y!Y#;ql&rsv7)lw~1YEPwj3dS57HjF4_Y zXodrOEeLteV7h~b>N!}1|I~ey^PQ<*n|SNlSu<^Q>BUb&f+@~}e-8Tm4jNBpbO3h0 zg~_M5atH>u|8&;4N0vV<&?qa1;J&p$wgVKN%(9=%Kv?B#_=4$_M)a_?XN`gr)24AA zxb)hs4W1pjhx3E$i#pVt!Kte`l5YfezrOm{8(x8kdhcDuZYnH5s4@3*o#iqS{Nu(E zOxF^)x?$Hi)wYt@`|Kai;QofSDWDU(iGR$%m&m~K(`K(Fz86sjo9FVh@^|VR>_uEv z@~ZPDh*APu>)rT6iKaAoo)2oD+MrXe|6xzNye;k5Z}e z%RSp-N95~m79yDx)13o+hkEj6+1(Tr{lJ){- zTd4{rZXU8TreIUtE|7;hpqQ+F4@G!;C3t*eR&a{ z`HH`M;I5cRHa*Efo9?pR5~aM^_S*Mc4fSpvCcRxOotJ24L@a(Cr`tp9 z8y&YXSo0I#Y4=;Wbl}BN5S)1&`BKQiV*OQQ@g=zDV)2%kJKEO9h+)F<6g@hzQ@6Gd z@ibCaC;KxtAKzUWSK$hIGhR9x#y4N(H?;o6<%@WNxkpzW4}+ZDo9<60V0)Kio06w5 zfHX5Bm_sX8lox&F2FggR@|p7`jwcL?dmY)H*RS_HZXZ;$1*rNOM?5n+`|mo@#ogOY z_|y$uH}NLO?>8z;C%ro)SPINUoDTQgd;W9VMRQ{>wjiw0RKab*yH15g_N6(~gs@8S zfoQI2^tkVO2dj#w^(*`uB)!Y=X#sx7HFDE>Q&?0WEdev;xtV#xIaXtwbW@yLKBQCZ zWG%G#xb4893E1vmE93lx4?;sa{p;|_g7TG4CzV-hWXsvmENrdH?g!t)p72QgUN@{n zwp;**f-#fs0-% zC&&sNhIpDNlh;G1DV2XM3)YL1y}FDlliIL>1(^Ro8CEiw+ZvyC4+r6C5Uf2^?II5A41HYwjZ z@=wc)&V{;p)%d^o28)upNVa`bz8Ej^4wnWrE~R1Q2qo*rGl^xq+ZBcdH}HBJGXRst z>`vi|wz(Jn>8hmMH#e{rt1Y4q*1X5-Xsyd(*uV)?R^;_s7TGY_nH2=>yu_hzY2i}w zp3cbc0nT7~6O@_Hp=2%=-?MyJa?-i05&4h)(t7;(NVwFR?;2yF>zB+NcXP4Rp8Abt z^_!W+O$QCMD}u*g&!TCeMUAeLKpq=XHRCSZP|3AtlaRVBE(@v>lih*pg!Y<7xuzn! z;SXJ*v~5DS_&ixx zuR9}jGEJ7>n$R?ZYth~F=vr4m!2H@1xK#6*?e-RWjUmS|Fa_!P(Digkx9t2_#EFwOze73QTdZakcNS%OQO2Rkg{#ZG{_mTAg-}HyHqvC+?o3unC{vlIK;t ztjc+RhpuJ#xJ#gZuJc8sX;|#{0kx6f(xOBB%}e65X8U)9T?wy$UIX-6{B;`e`(#)A zgp^0l;Ag+2@9F;h2By{0#U_MhNq)MRNd5(C=P${T6T>*boKws9=tJ**l57p0uin?P z*VfitHV0Q6)0gVK7_U~MIUv()p=rd1lz=yN48eRY_CvoEZ_Fpw?5k~BCBTLS*vqV5 zA8vZoRgzr=FW{nu&(>5R=A&Cvl-PRf7nsu|1Gq2H-ZtO0B2WikP1~WRKFP4&1n$UR z`fxmd4F*8)*@vddHvMZ@JM_)#)&8z<%n@cc!El~!q6r_!-jq80ehHHmMvFZOJ5Gfl zkGJC2$|Lj=dZi?=*CHBU86j>s?`=PhJ7o74g2Q5`6VCi6uZyg`)iL>bmHNKa&6h9D zb$pLiC1-8T>;7Gc``E;y^rymeb0hsbd@o&Mauo2d7%B>{NnwC`PbVj7LoJI2%ZB_b7k$JP8@_o`oRR*g42V#iIqLOz69*D`n1fQt#VWODaQdjc^7F*^DjGoopqcYwziO5Bkmo*42T8KJ&f#@s>%R zjk8`xW>2sonB|x3@!zU`p+PHfLoHQKW|@=f>TFviwFQKn^K@mZiOw{H>*`a&>Qqm! z{005u-GU4*1=-!xb{Au2%t@84j@`p5Am_;7mea1iLTv_e^h&y$X*04!xV`5ePF6|% z<^IKM&suJ^Qk-4jp(&(p4mZpI@2h6Y2yq8}9c>5v&$W(AC|yj(QED#UxNTdAYkQ1) z-8JKl@rJ6SN##k+zQ(kA619;59&Xv#ZU9t1hQD&#_In1_Z^w|Z!9<$+#l)iFhu2|-IW^F9hc^w#ATOh_N?)X6Z^-F=b4Fuo7XKY2XyAPwp=%wCw zo`uMQ*Z(PiHDI=BY$DY-U9M9F(dWIqn42Om>#4C)w7;6Rc zL93YWXt4KjJe@I?l+&A=Eod}>y{s0lKdwV>Wa$3@BnYjpnqvvD?%IESi*^k7dwCay0X2}32MJjE%mAMI&gUGN#!}xl17RRR#BRh+C ze#7%4P$Ogs3-BAucbw?H;HkwUD}h%4dz*kX;UvBfQun$uc&u0c?r_Az#_3(jYBP^t zZx0-zs-bn37BgLvO5lOB!OrNZ<0O?YYSY3`tRsedw!qwa-D6|(LT2L zkN}%=lh)%d32UG5_4ZiB0NJjz5BwV}S=({pk}P>IY>rj6Cho?Q%L6(K`|tSI7t;(Q zQ_AK}Z)x@l*1}igi3hdf=6!oqLi+b{S0g{D-vp{{1oFnz%xm))0Prf$tZy01IG+9b z-qX0rP@oN-z%0$o#jf(0?H661CP+L?!>!q1XC0W?AtwJWmH~^V75_FB!br?g{84JH zr06&%n0&e0IG6lktyhZ*&w+0&MgM+rnFW3!bivGRIwd&tG3Rcdf_ra{Z8`;KFlphY zPvvj;Xl$}q_hACk;LfuLM?;rO8EMX z&)`Zl4KU;Yc*3t*ir`6r;Oiy@7=>M%M|327kKg379=>i{GZ+qk94@_FpisXS;@xQW z%yO`jxv6TYVA=W>JzbPEPYGfp@hvuWyX=`H!q;tH#>c~N^rQ2eu~Yr%%x{UpBLv^o z{L2@I^JEod%NjD5BL#R0=0vv>b8?glBnfr6_F)Rc%dRVpQyN5#ACLi)h|9D+sW9Byg{o{>I%*m0$8~=X~(~4we1ii#u zSB4GzHzRKVE;ezMde29kMO*aJW!&c)u*{r}SPWxyZM$Y=Cg$-<3{1%?g3M9|Y#XgZ- zXh9Z_om8Elu+Q*Ou#IGW1v{&4+t0C}vZe~qSxf#JC>n1FonFY3-qk)nW0<`QBP_dj zL=@d=jsGs^zdj*JF=^;LBm7hlsCC{q0csu|dEl~TLPpK~Ck|ok=J=!L?0F{cP>m@L z55ZAbQ*Kji#ZCP@`_u0GB}v}agRSb{@?*fOv#cz#N9nAZ0tf%T=Yo2eU|MFC( zM&vgUd8CI=Sc1bC;paQgLw~^sCsRMKGGe4=GMHo7u8>;w=65CQu*Rk?r!S`;0bkFq zk#1A6$`U4Yx)o}s1jTJz%1F2C_kKxpjhPF0CyoBJOg0y2c>N%lE`-0<=jYo(%Coms z;@Sb~vVbypYdBZ4J?XB7Dv~XSV$$FAAzOR>>c0HaVK+JWAxy^v`|~BKR8rJpbEbWF zvmYVqi5^&vDWX*;UPlL<+TR5}bwa-xncdTJDQ#D=#d;M=`|vd6N+k|q#u>ad zoMS8aXYWl@>fMLFziM}A9HvrSyFZ9dnxD9lbBdLCTTUlS?yS4HwXU~z$v!w~CBA=B zNFR(b_tjVY-pBGh^*uuAbPHm=u1u72Ge3N}cDLM?1=BC~`q6QlGJ$v#d);}hO45Ai zv?|wJ9=wL@)gx2uNfO)cb?C!Qwdr(6?#{&ugz%$w7C%YQpae`lM|}q#-iCsm6h(s zfXyW6rl2lPkGI5kA(D(miL%(R&(g8hqnnAOKYy=r>*ok;i@?JYR93?(-o^yn3#3V~ zb8yh~p#nc73H?P8)2~|(?3t~0)+K4(jY+C6uUdi@g@0VMIqcqe=;>_fFkrh!c%iH4 zFx$Ct&EDE_^IGQ`w?&bBE>y#HbeP+ni7{a-p7T;gLSjO1}iNSC2Hug;K5cGu@Nq_Ss&L++LfUei7{UT$?$$XN?AUF9-?gy zqDy-_Vm-}V6P!Gkd_~+f65>PH?nhBvp{YplN(#Mq$BBe{#f!ScWS}W-6Z2%WX7SiR z=`{3QkL&&VZz8JQlXTzF(D#_r4~%#7SBBNclG z2`A;~+!Jyw%+>0HQvJ9i=6>r^xaR}Ym+7f5s@(6tOl|_~1aGj?Lh;eSD#`1 zY|?nES3Vt^hT+}P$Ih>N<4@XJ;Wzel9A-~W)==NB^{#Q-Q5wxZ3|N_ulL*$8Ey}SR z2LWKe%JeeXDDHD&kNJ!>TTb+k3ws5kFkj^8A>TTG{VIGDYM--TtD;CqyX=P=t999) zNPdTI(i?SJ(#t|?p12R!6$1`(T4wrIFEJlN;;VC>Q9dzIusxs`+!czuMDvv~{G-E@ zUglK(`s?HAF!>bQN6So%w%~*HU4s}CSu>NGjBH%!oQ>e}=z!#oz!dMh{I02&rB)-+ z^y8}JHiE*Uv_l$GBp>WeQ}CtrSq%d!&DVa{KNw}svwehh1d6k#OsIj1gjjpv5zV)a z1>ch2{{@V9A|Gg-$H4BDEX~#3aqx}NVO2(85j$auEWIo0ncZjbUKNZQR`1MjhYoHe zKj=WeU#?mVM}#zCK3p8k@zF2<|Aq>3a&oGx<3kR{5#oYHFV+emKfk)qPpoykeKZNa zonNBiKt=$xl#K~FErx>62Zx#Czi@>>!#AjM#cq_>AX@gnL*5TC?GA9Lc?8H~#`xFhdFrDYt)F zU&t0mtH}sh_vbp?b2p922m0Q&mc7y|b^_cQ1cl)mUr=$b4mVJXQ03>N{YF!5U;ft; z;6L&ReI468OkK3x_E`6%R#>xb{viU_h(fjfN)@m3P|-Aqs$%}%?N83P%h-G1PcAaT z-k4(j*#lHqVWY$-0(FNveB4%u zRSYO+zqT<3ezY2*;TT$ierLWWYrf);JL2|m3~BqwpA{yZJo?b|tCL$=$cXhhQ9idK zW)SBTDT#w|`JgR`xYUobycy8ob0wkyOZ~0*8%~mWWehpGUUwdqKz~=ty*1*g1f&qNSGhs3sc0awZyO$o=BuBZk zx|7B=j1sSO(;A5n5fCj{j0J6D)NZ=6inB0Ca9fdgN^JbuEvLmwB!n$;^RDWPVCie-2-#Uf9gIRe0TZ1jvae@WmQ$B*zkyl_pg%m zau3*7FcDkv7$)pKv!|7|%sv7$MrQ#}P2UAty{XH8hPln2_;vN8Y>1r2MZlEgchr6z stP~u6DH#_l9_i*?h$*@E;s%azac$>5x2Q1Fc^T1A(SBU4^y=;Z1DxbucmMzZ diff --git a/vignettes/c-advanced-base.Rmd b/vignettes/c-advanced-base.Rmd index 36bf2976..cc33c117 100644 --- a/vignettes/c-advanced-base.Rmd +++ b/vignettes/c-advanced-base.Rmd @@ -9,7 +9,7 @@ vignette: > **Authors:** William Gearty & Lewis A. Jones -**Last updated:** 2024-04-23 +**Last updated:** 2024-07-30 @@ -26,7 +26,7 @@ The **rphylopic** package provides robust and flexible tools to access and trans First, let's load our libraries and the penguin data: -```r +``` r # Load libraries library(rphylopic) library(palmerpenguins) @@ -37,7 +37,7 @@ data(penguins) Now, let's pick a silhouette to use for the penguins. Let's pick #2: -```r +``` r # Pick a silhouette for Pygoscelis (here we pick #2) penguin <- pick_phylopic("Pygoscelis", n = 3, view = 3) ``` @@ -47,7 +47,7 @@ penguin <- pick_phylopic("Pygoscelis", n = 3, view = 3) You may have noticed in the preview that the silhouette was a little slanted. Let's rotate it clockwise just a smidgen: -```r +``` r # It's a little slanted, so let's rotate it a little bit penguin_rot <- rotate_phylopic(img = penguin, angle = 15) ``` @@ -55,7 +55,7 @@ penguin_rot <- rotate_phylopic(img = penguin, angle = 15) Now, let's clean the data and split the data among the three species: -```r +``` r # Subset the data to remove rows with missing sex values penguins_subset <- subset(penguins, !is.na(sex)) # Split the data by species @@ -65,7 +65,7 @@ species_split <- split(penguins_subset, penguins_subset$species) Now we're going to make a three panel plot, one panel for each species. Within each panel, we'll plot the penguins' bill lengths vs. their flipper lengths: -```r +``` r # Set up the plot area par(mfrow = c(3, 1), mar = c(4, 4, 2, 1)) @@ -85,10 +85,10 @@ for (i in seq_along(species_split)) {

plot of chunk base-penguin-plot-1

-That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. To do that, we can use the `add_phylopic_base()` function. Note that the `x` and `y` arguments specify the center of the silhouette, and the `ysize` argument specifies how tall the silhouette is in the units of the y-axis. +That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. To do that, we can use the `add_phylopic_base()` function. Note that the `x` and `y` arguments specify the center of the silhouette, and the `height` argument specifies how tall the silhouette is in the units of the y-axis. -```r +``` r # Set up the plot area par(mfrow = c(3, 1), mar = c(4, 4, 2, 1)) @@ -100,7 +100,7 @@ for (i in seq_along(species_split)) { main = names(species_split)[i], xlim = range(penguins_subset$bill_length_mm, na.rm = TRUE), ylim = range(penguins_subset$flipper_length_mm, na.rm = TRUE)) - if (i == 1) add_phylopic_base(img = penguin_rot, x = 59, y = 215, ysize = 30) + if (i == 1) add_phylopic_base(img = penguin_rot, x = 59, y = 215, height = 30) } ``` @@ -112,7 +112,7 @@ for (i in seq_along(species_split)) { Isn't that nifty! We can go a step further, though. What if we used little penguins instead of points?! To do that, we can once again use the `add_phylopic_base()` function. In this case, we can again specify `img = penguin_rot` since we want to use the same image for each x-y pair: -```r +``` r # Set up the plot area par(mfrow = c(3, 1), mar = c(4, 4, 2, 1)) @@ -137,7 +137,7 @@ for (i in seq_along(species_split)) { Oh no, the silhouettes are way too big! The default for `add_phylopic_base()` is to make the silhouette the same height as the plot, which is way too big for our case here. Let's make the size of the silhouettes relative to the penguins' body masses. A scaling factor of 8 seems to work well for this size figure. -```r +``` r par(mfrow = c(3, 1), mar = c(4, 4, 2, 1)) for (i in seq_along(species_split)) { @@ -149,7 +149,7 @@ for (i in seq_along(species_split)) { add_phylopic_base(img = penguin_rot, x = species_data$bill_length_mm, y = species_data$flipper_length_mm, - ysize = species_data$body_mass_g / + height = species_data$body_mass_g / max(penguins_subset$body_mass_g, na.rm = TRUE) * 8) } ``` @@ -162,7 +162,7 @@ for (i in seq_along(species_split)) { Finally, let's give the female and male penguins different fill colors. We'll also add a legend to the last panel. -```r +``` r par(mfrow = c(3, 1), mar = c(4, 4, 2, 1)) for (i in seq_along(species_split)) { @@ -174,7 +174,7 @@ for (i in seq_along(species_split)) { add_phylopic_base(img = penguin_rot, x = species_data$bill_length_mm, y = species_data$flipper_length_mm, - ysize = species_data$body_mass_g / + height = species_data$body_mass_g / max(penguins_subset$body_mass_g, na.rm = TRUE) * 8, fill = ifelse(species_data$sex == "male", "blue", "orange")) } @@ -197,7 +197,7 @@ In much the same way as generic x-y plotting, the **rphylopic** package can be u First, let's load our libraries and the tetrapod data: -```r +``` r # Load libraries library(rphylopic) library(maps) @@ -209,7 +209,7 @@ data(tetrapods) Then we'll subset our occurrences to only those for *Diplocaulus*: -```r +``` r # Subset to desired group tetrapods <- subset(tetrapods, genus == "Diplocaulus") ``` @@ -217,7 +217,7 @@ tetrapods <- subset(tetrapods, genus == "Diplocaulus") Now, let's plot those occurrences on a world map. Here we use the `{geodata}` and `{raster}` packages to generate the map. Then we add colored points on top of this. Note that we use `alpha = 0.75` in case there are multiple occurrences in the same place. That way, the darker the color, the more occurrences in that geographic location. -```r +``` r # Plot map map("world", col = "lightgrey", fill = TRUE) # Plot points @@ -233,10 +233,10 @@ points(x = tetrapods$lng, y = tetrapods$lat, cex = 2, pch = 16, Now, as with the penguin figure above, we can easily replace those points with silhouettes. -```r +``` r map("world", col = "lightgrey", fill = TRUE) add_phylopic_base(name = "Diplocaulus", x = tetrapods$lng, y = tetrapods$lat, - ysize = 8, fill = "blue", alpha = 0.75) + height = 8, fill = "blue", alpha = 0.75) ```
@@ -252,7 +252,7 @@ Note that we used the genus name as the `name` argument here. However, if we wer Another common use case of PhyloPic silhouettes is to represent taxonomic information. In this example, we demonstrate how to use silhouettes within a phylogenetic framework. In this case, the phylogeny, taken from the `{phytools}` package, includes taxa across all vertebrates. Even many taxonomic experts are unlikely to know the scientific names of these 11 disparate taxa, so we'll replace the names with PhyloPic silhouettes. First, let's load our libraries and data: -```r +``` r # Load libraries library(rphylopic) library(ggplot2) @@ -264,7 +264,7 @@ data(vertebrate.tree) We can use a vectorized version of the `get_uuid()` function to retrieve UUID values for all of the species at once. However, just in case we get an error, we wrap the `get_uuid()` call in a `tryCatch()` call. This way, we should get either a UUID or `NA` for each species: -```r +``` r # Make a data.frame for the PhyloPic names vertebrate_data <- data.frame(species = vertebrate.tree$tip.label, uuid = NA) # Try to get PhyloPic UUIDs for the species names @@ -278,7 +278,7 @@ vertebrate_data ``` ## species uuid ## 1 Carcharodon_carcharias 00f208a3-887d-4ae8-838c-2124f53b9fc1 -## 2 Carassius_auratus b1995423-0170-4ff1-af49-1cdf692d8fc7 +## 2 Carassius_auratus ace2b280-abe8-4dce-96db-be4e393f836d ## 3 Latimeria_chalumnae 12c38a8a-6d68-4af3-ada3-05cafdfc25c2 ## 4 Homo_sapiens 9c6af553-390c-4bdd-baeb-6992cbc540b1 ## 5 Lemur_catta 8a187391-82a3-4d9b-a402-3a310bf7dc38 @@ -293,7 +293,7 @@ vertebrate_data Oh no, we weren't able to find a silhouette for *Myotis lucifugus* (little brown bat)! Good thing we used `tryCatch()`! Given the coarse resolution of this phylogeny, we can just grab a silhouette for the subfamily (Vespertilioninae): -```r +``` r vertebrate_data$uuid[vertebrate_data$species == "Myotis_lucifugus"] <- get_uuid("Vespertilioninae") ``` @@ -301,7 +301,7 @@ vertebrate_data$uuid[vertebrate_data$species == "Myotis_lucifugus"] <- I'm also not a huge fan of the boar picture. Let's choose an alternative with `pick_phylopic()`. -```r +``` r # Pick a different boar image; we'll pick #2 boar_svg <- pick_phylopic("Sus scrofa", view = 5) # Extract the UUID @@ -314,14 +314,14 @@ vertebrate_data$uuid[vertebrate_data$species == "Sus_scrofa"] <- Now that we've got our phylogeny and UUIDs, we could go ahead and create our figure. However, time for a quick aside. The time required for `add_phylopic_base()` and the other **rphylopic** visualization functions scales with the number of *unique* names/UUIDs, not the number of plotted silhouettes. Therefore, if you are plotting a lot of *different* silhouettes, these functions can take quite a long time to poll PhyloPic for each unique name, download the silhouettes, and convert them to be added to the plot. If you plan to use the same silhouettes for multiple figures, we strongly suggest that you poll PhyloPic yourself using `get_phylopic()` or `pick_phylopic()`, save the silhouettes to your R environment, and then these use image objects in the visualization functions (with the `img` argument/aesthetic). Following this advice, let's get image objects for these 11 species before we make our figure. Note that, since we've used `get_uuid()` to get these 11 UUIDs, we know that they are valid, so we don't need to catch any errors this time. -```r +``` r vertebrate_data$svg <- lapply(vertebrate_data$uuid, get_phylopic) ``` Now let's go ahead and plot our phylogeny with the `{ape}` package: -```r +``` r library(ape) # Plot the tree plot(vertebrate.tree) @@ -335,7 +335,7 @@ plot(vertebrate.tree) Hmm...that's a bit boring. Let's add a geological timescale to the bottom using `axis_geo_phylo()` from the `{palaeoverse}` package. -```r +``` r library(palaeoverse) # Plot the tree with a geological timescale on the bottom plot(vertebrate.tree) @@ -350,11 +350,11 @@ axis_geo_phylo(intervals = "periods") That's looking a lot prettier! Let's go ahead and replace the tip labels with our silhouettes now using `add_phylopic_base()`. Note that while it may look like all of the tips have an x-axis value of 0, that's actually a trick from `axis_geo_phylo()`. In reality, the left end of the x-axis is 0, and the right end of the x-axis is the total height of the tree. We can calculate this using the `nodeHeights()` function. -```r +``` r plot(vertebrate.tree, show.tip.label = FALSE) axis_geo_phylo(intervals = "periods") add_phylopic_base(img = vertebrate_data$svg, - x = max(nodeHeights(vertebrate.tree)), y = 1:11, ysize = 0.5) + x = max(nodeHeights(vertebrate.tree)), y = 1:11, height = 0.5) ```
@@ -365,7 +365,7 @@ add_phylopic_base(img = vertebrate_data$svg, Note that only a single size is specified and aspect ratio is always maintained, hence why the silhouettes all have the same height but different widths. Let's fix some of the silhouettes by rotating them 90 degrees: -```r +``` r vertebrate_data$svg[[1]] <- rotate_phylopic(img = vertebrate_data$svg[[1]]) vertebrate_data$svg[[8]] <- rotate_phylopic(img = vertebrate_data$svg[[8]]) ``` @@ -373,11 +373,11 @@ vertebrate_data$svg[[8]] <- rotate_phylopic(img = vertebrate_data$svg[[8]]) And now the finished product: -```r +``` r plot(vertebrate.tree, show.tip.label = FALSE) axis_geo_phylo(intervals = "periods") add_phylopic_base(img = vertebrate_data$svg, - x = max(nodeHeights(vertebrate.tree)), y = 1:11, ysize = 0.5) + x = max(nodeHeights(vertebrate.tree)), y = 1:11, height = 0.5) ```
diff --git a/vignettes/c-advanced-base.Rmd.orig b/vignettes/c-advanced-base.Rmd.orig index 47d432e0..6b5b8d1f 100644 --- a/vignettes/c-advanced-base.Rmd.orig +++ b/vignettes/c-advanced-base.Rmd.orig @@ -81,7 +81,7 @@ for (i in seq_along(species_split)) { } ``` -That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. To do that, we can use the `add_phylopic_base()` function. Note that the `x` and `y` arguments specify the center of the silhouette, and the `ysize` argument specifies how tall the silhouette is in the units of the y-axis. +That's a nice basic plot! But you know what would make it nicer? If we added a penguin silhouette to the plot. Sadly, we don't have a different silhouette for each species (although we could make one...), so let's just go with putting a single silhouette in the top panel. To do that, we can use the `add_phylopic_base()` function. Note that the `x` and `y` arguments specify the center of the silhouette, and the `height` argument specifies how tall the silhouette is in the units of the y-axis. ```{r base-penguin-plot-2} # Set up the plot area @@ -95,7 +95,7 @@ for (i in seq_along(species_split)) { main = names(species_split)[i], xlim = range(penguins_subset$bill_length_mm, na.rm = TRUE), ylim = range(penguins_subset$flipper_length_mm, na.rm = TRUE)) - if (i == 1) add_phylopic_base(img = penguin_rot, x = 59, y = 215, ysize = 30) + if (i == 1) add_phylopic_base(img = penguin_rot, x = 59, y = 215, height = 30) } ``` @@ -132,7 +132,7 @@ for (i in seq_along(species_split)) { add_phylopic_base(img = penguin_rot, x = species_data$bill_length_mm, y = species_data$flipper_length_mm, - ysize = species_data$body_mass_g / + height = species_data$body_mass_g / max(penguins_subset$body_mass_g, na.rm = TRUE) * 8) } ``` @@ -151,7 +151,7 @@ for (i in seq_along(species_split)) { add_phylopic_base(img = penguin_rot, x = species_data$bill_length_mm, y = species_data$flipper_length_mm, - ysize = species_data$body_mass_g / + height = species_data$body_mass_g / max(penguins_subset$body_mass_g, na.rm = TRUE) * 8, fill = ifelse(species_data$sex == "male", "blue", "orange")) } @@ -199,7 +199,7 @@ Now, as with the penguin figure above, we can easily replace those points with s ```{r base-geog-plot-2, fig.height = 5, warning = FALSE} map("world", col = "lightgrey", fill = TRUE) add_phylopic_base(name = "Diplocaulus", x = tetrapods$lng, y = tetrapods$lat, - ysize = 8, fill = "blue", alpha = 0.75) + height = 8, fill = "blue", alpha = 0.75) ``` Snazzy! @@ -282,7 +282,7 @@ That's looking a lot prettier! Let's go ahead and replace the tip labels with ou plot(vertebrate.tree, show.tip.label = FALSE) axis_geo_phylo(intervals = "periods") add_phylopic_base(img = vertebrate_data$svg, - x = max(nodeHeights(vertebrate.tree)), y = 1:11, ysize = 0.5) + x = max(nodeHeights(vertebrate.tree)), y = 1:11, height = 0.5) ``` Note that only a single size is specified and aspect ratio is always maintained, hence why the silhouettes all have the same height but different widths. Let's fix some of the silhouettes by rotating them 90 degrees: @@ -298,7 +298,7 @@ And now the finished product: plot(vertebrate.tree, show.tip.label = FALSE) axis_geo_phylo(intervals = "periods") add_phylopic_base(img = vertebrate_data$svg, - x = max(nodeHeights(vertebrate.tree)), y = 1:11, ysize = 0.5) + x = max(nodeHeights(vertebrate.tree)), y = 1:11, height = 0.5) ``` Beautiful! diff --git a/vignettes/ggplot-geog-plot-1-1.png b/vignettes/ggplot-geog-plot-1-1.png index 04a1be988b0419b5747bf065b593ce99339e110c..a1bba9e17bcc8aba1c9415ddb43c9902d7ed3db7 100644 GIT binary patch literal 29995 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 literal 30415 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 cV+su22LYA{3M^N4slV|a(0B-y4-|44gL9DM| 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 diff --git a/vignettes/ggplot-penguin-plot-3b-1.png b/vignettes/ggplot-penguin-plot-3b-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a35b2560e407743d9d2958fc11fc796024d05421 GIT binary patch literal 44879 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 aF}xjFT(n(BKNiMf>m2#o&zo}~g7znvk?|D( literal 0 HcmV?d00001 diff --git a/vignettes/ggplot-penguin-plot-5-1.png b/vignettes/ggplot-penguin-plot-5-1.png index 689ce7a128f66709a37511abed003e00430a8cac..1575895e442500f064a6708c56c5cd3646b01336 100644 GIT binary patch delta 32786 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 delta 32975 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 BHirNJ diff --git a/vignettes/ggplot-penguin-plot-6-1.png b/vignettes/ggplot-penguin-plot-6-1.png index 1889731b7b8df9a0649aea5d141839f782ba3a87..f845fb443e15e7740e79ce43db78261e496bc734 100644 GIT binary patch literal 46827 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 ajlHqdM#e>24mdl2{g6wDMPBqUTS$~SaK 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 RVf{Mr*`07YUSoX$_aAhdsHp$| diff --git a/vignettes/ggplot-phylo-plot-3-1.png b/vignettes/ggplot-phylo-plot-3-1.png index 68a830a2aa877fddf7c58cf0beb66fabfb265aa8..880eb41bc0e444658d5b107eeb4aee66f9ed8b1c 100644 GIT binary patch literal 34486 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 TPPS($E7mvL?3O;h8V#S+c z4zWDuRys%!#B%j?u+I+L0J3uqcP9q?Z@aC7D88eAw` z>-1wS>l>!qXNL$yPRR;JZuu1L3QzWqV=fbQazf-Ir@Xn#!+zAuDWgOFg+G0)v8YUG z7(CdC5F!uazXhZ9n^|#V=7d=3C+ort-+`N{nU4?}84+JXgX1SuD#FM9VL7^x?b$d zl6|RTEs6@fJ<@p*KZwI>C`Y<+u65-VlJLsr#Xhmmx6gLhz;B)6)9g6wJ+%^yvPDU_4tCOo?`ybO wrgve=(k)-Y5HAp%CcK*e|Ih!|QLrN*o%_v{bM$2c1pHmRaK)s;==P)k1JMz_KL7v# literal 34511 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�B7E4Y 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≦@v_#AQ!pL_^!u7k_WoqXgG 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 MyJ%W$^6$O>17zF&7ytkO diff --git a/vignettes/ggplot-phylo-plot-4-1.png b/vignettes/ggplot-phylo-plot-4-1.png index d77450a9578a6e753f60d7b48028745d321f3001..5e6ed0e5bddf5407622cc5133435ea009fef2db2 100644 GIT binary patch delta 32650 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 $%1A}LDEw_1WKEeD`&wJliVoSvuLR5 zOo-DT<{`NroGb_}a9pB0aH>9jC?cjZ;vJy?y?x|lpk`do)$52=XnIA|S&DQ~iuk~Y zM4)y!QnJ@Bh!s*!SlopOLcLFyh z>ruoH?yRp^-iMP`n!h~Q;1_#$EtlFxUD9e0&5WvS3uUJh!kd$3MUy`%8q2mytNT57 zCbUR^@+H|kCseao{y*{$=K4v+)c$2Ghv>oy`9#p5F4w=Q7P`6}a;Jc6AcN!$C7C~M z_oSoSsY{P8*&%WmDdCp*R^M9!;U`sUU(YCreiau}Fw!-K1Pq3`NxXtRG}@y%ev|pp z*%q#;56$2#C*&h3W#NQ{o2p)~F;O`ysZ-k4eTlWIl13U4JVJlV9bVx zeXDD=ZuxFP&j(m?9{4#fRt}mKv~pP`{%YS3>{$x@oD+Op>>NGzZn?8-49kozspYoS z$ft;F4yI&@)>?b;D`K_Fw+k&q>_oXDzGooe@-nJ*-HQ1X3X@6!_!*;aG?HG#s*5g~sQ0G1o@zUag8qcaKYJjW@Iew9Easpr!NQ>6} zXyg-ukQ<_6HqT9ar~>xc*JH3g$F|q19)G@!TVblQ)H9v44z@J> zMQY>na?#tsq%q!FRo)Lddk3|_iXHb6*G?GQKz1qT*Y-8iGI zbXq$kDOV#+euhjG9@tZ=P8B>aX#7|AP3O&r{4w_ZoFyp;3fj?mjTf@y;9v5|zl*|$ z8ec8;jcSVET>rOdN$;z~y;SJYF~o=V`pNxL35%9+N<)nL1T99)ZC+sLrWr%B19BKM zC~9%-_JFFL`bi+rP*}6MB4b$0`1?2AmG3v+TRlTnr(A1Z{|kU6C zNm`ALZr;;(7%aFp&hI(9EPdOmxIz@W*)ZF9Codhu7)gWYTC10EP(-tln#KZ;SZ9j9By0x&Wh8nv@ zRQIr#I9<4x=_Um}SGw-ex)V-8!qoNmRprY@dvK$VoF@ahIPOwZrjI-G{gTyVloe}A uYAI_(shCPSJfG!`OTa(? delta 32726 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 XJ?ea=PmAxuz`t{*HYOFu*Khw1DEr<3 From aa1c133f185168f1f77d1e9f30890a172d4ad53b Mon Sep 17 00:00:00 2001 From: William Gearty Date: Tue, 30 Jul 2024 17:41:38 -0400 Subject: [PATCH 19/21] Add new functions to pkgdown index --- _pkgdown.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_pkgdown.yml b/_pkgdown.yml index 29f8fd4f..ef2c6731 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -37,6 +37,8 @@ reference: contents: - geom_phylopic - phylopic_key_glyph + - scale_height_continuous + - scale_width_continuous - add_phylopic - add_phylopic_base - add_phylopic_legend From 55fd74d0137ebedf98e7dcdfa2900319054deeeb Mon Sep 17 00:00:00 2001 From: William Gearty Date: Thu, 8 Aug 2024 10:19:21 -0700 Subject: [PATCH 20/21] Apply suggestions from code review Co-authored-by: Lewis A. Jones <41071747+LewisAJones@users.noreply.github.com> --- NEWS.md | 2 +- R/geom_phylopic.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index d7f1bc09..b3c82c4f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,7 @@ # rphylopic (development version) * Added ability to specify horizontal and vertical justification of silhouettes (#101) -* Added ability to specify width instead of height for silhouettes (#103) +* Added ability to specify width or height for silhouettes (#103) * Note that all "ysize" and "size" arguments/aesthetics are now deprecated in favor of "height" and "width" arguments/aesthetics # rphylopic 1.4.0 diff --git a/R/geom_phylopic.R b/R/geom_phylopic.R index 1673738c..ae49491e 100644 --- a/R/geom_phylopic.R +++ b/R/geom_phylopic.R @@ -499,7 +499,7 @@ phylopicGrob <- function(img, x, y, height, width, return(img_grob) } -#' Scales for phylopic heighgt or width +#' Scales for phylopic height or width #' #' `scale_height_continuous()` scales the height of silhouettes whereas #' `scale_width_continuous()` scales the height of silhouettes. From 20eb333f39594e200a48f2f1f62e974c0ac47da8 Mon Sep 17 00:00:00 2001 From: William Gearty Date: Thu, 8 Aug 2024 17:52:29 -0700 Subject: [PATCH 21/21] Address review; fix plotting with log axes --- R/add_phylopic.r | 4 +-- R/add_phylopic_base.r | 61 +++++++++++++++++++++++++++++----------- man/add_phylopic.Rd | 4 +-- man/add_phylopic_base.Rd | 23 ++++++++------- man/scales.Rd | 2 +- 5 files changed, 60 insertions(+), 34 deletions(-) diff --git a/R/add_phylopic.r b/R/add_phylopic.r index f53fb6b1..761a0d01 100644 --- a/R/add_phylopic.r +++ b/R/add_phylopic.r @@ -86,7 +86,7 @@ #' # Put a silhouette in several places based on UUID #' posx <- runif(10, 0, 10) #' posy <- runif(10, 0, 10) -#' sizey <- runif(10, 0.4, 2) +#' heights <- runif(10, 0.4, 2) #' angle <- runif(10, 0, 360) #' hor <- sample(c(TRUE, FALSE), 10, TRUE) #' ver <- sample(c(TRUE, FALSE), 10, TRUE) @@ -97,7 +97,7 @@ #' p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + #' geom_blank() + #' add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", -#' x = posx, y = posy, height = sizey, +#' x = posx, y = posy, height = heights, #' fill = fills, alpha = alpha, angle = angle, #' horizontal = hor, vertical = ver) #' p + ggtitle("R Cat Herd!!") diff --git a/R/add_phylopic_base.r b/R/add_phylopic_base.r index b04f4563..303e484d 100644 --- a/R/add_phylopic_base.r +++ b/R/add_phylopic_base.r @@ -12,12 +12,10 @@ #' Use "by" to limit results to images which do not require attribution, "nc" #' for images which allows commercial usage, and "sa" for images without a #' ShareAlike clause. The user can also combine these filters as a vector. -#' @param x \code{numeric}. x value of the silhouette center. Ignored if `y` and -#' `ysize` are not specified. If "NULL", the default, the mean value of the -#' x-axis is used. -#' @param y \code{numeric}. y value of the silhouette center. Ignored if `x` and -#' `ysize` are not specified. If "NULL", the default, the mean value of the -#' y-axis is used. +#' @param x \code{numeric}. x value of the silhouette center. If "NULL", the +#' default, the mean value of the x-axis is used. +#' @param y \code{numeric}. y value of the silhouette center. If "NULL", the +#' default, the mean value of the y-axis is used. #' @param ysize `r lifecycle::badge("deprecated")` use the `height` or `width` #' argument instead. #' @param height \code{numeric}. Height of the silhouette in coordinate space. @@ -55,12 +53,13 @@ #' @param verbose \code{logical}. Should the attribution information for the #' used silhouette(s) be printed to the console (see [get_attribution()])? #' @details One (and only one) of `img`, `name`, or `uuid` must be specified. -#' Use parameters `x`, `y`, and `height`/`width` to place the silhouette at a -#' specified position on the plot. If all of these parameters are unspecified, -#' then the silhouette will be plotted to the full height and/or width of the -#' plot. The aspect ratio of `Picture` objects will always be maintained (even -#' when a plot is resized). However, if the plot is resized after plotting a -#' silhouette, the absolute size and/or position of the silhouette may change. +#' Use parameters `x`, `y`, `hjust`, and `vjust` to place the silhouette at a +#' specified position on the plot. If `height` and `width` are both +#' unspecified, then the silhouette will be plotted to the full height and/or +#' width of the plot. The aspect ratio of `Picture` objects will always be +#' maintained (even when a plot is resized). However, if the plot is resized +#' after plotting a silhouette, the absolute size and/or position of the +#' silhouette may change. #' #' Any argument (except for `remove_background`) may be a vector of values if #' multiple silhouettes should be plotted. In this case, all other arguments @@ -205,11 +204,19 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, # get plot limits usr <- par()$usr usr_x <- if (par()$xlog) 10^usr[1:2] else usr[1:2] + #usr_x <- usr[1:2] usr_y <- if (par()$ylog) 10^usr[3:4] else usr[3:4] + #usr_y <- usr[3:4] # set default position and dimensions if need be - if (is.null(x)) x <- mean(usr_x) - if (is.null(y)) y <- mean(usr_y) + if (is.null(x)) { + mn <- mean(usr[1:2]) + x <- if (par()$xlog) 10 ^ mn else mn + } + if (is.null(y)) { + mn <- mean(usr[3:4]) + y <- if (par()$ylog) 10 ^ mn else mn + } if (is.null(height) && is.null(width)) { height <- abs(diff(usr_y)) width <- abs(diff(usr_x)) @@ -218,13 +225,33 @@ add_phylopic_base <- function(img = NULL, name = NULL, uuid = NULL, # convert x and y to normalized device coordinates x <- grconvertX(x, to = "ndc") y <- grconvertY(y, to = "ndc") - + # convert width and/or height to normalized device coordinates if need be if (!is.null(height)) { - height <- grconvertY(height, to = "ndc") - grconvertY(0, to = "ndc") + if (any(height < (abs(diff(usr[3:4])) / 1000), na.rm = TRUE)) { + warning(paste("Your specified silhouette `height`(s) are more than", + "1000 times smaller than your y-axis range. You probably", + "want to use a larger `height`."), call. = FALSE) + } + if (par()$ylog) { + base_y <- grconvertY(1, to = "ndc") + } else { + base_y <- grconvertY(0, to = "ndc") + } + height <- grconvertY(height, to = "ndc") - base_y } if (!is.null(width)) { - width <- grconvertX(width, to = "ndc") - grconvertX(0, to = "ndc") + if (any(width < (abs(diff(usr[1:2])) / 1000), na.rm = TRUE)) { + warning(paste("Your specified silhouette `width`(s) are more than 1000", + "times smaller than your x-axis range. You probably want", + "to use a larger `width`."), call. = FALSE) + } + if (par()$xlog) { + base_x <- grconvertX(1, to = "ndc") + } else { + base_x <- grconvertX(0, to = "ndc") + } + width <- grconvertX(width, to = "ndc") - base_x } # change NULLs to NAs diff --git a/man/add_phylopic.Rd b/man/add_phylopic.Rd index 6db46dcf..a1ec3919 100644 --- a/man/add_phylopic.Rd +++ b/man/add_phylopic.Rd @@ -133,7 +133,7 @@ ggplot(iris) + # Put a silhouette in several places based on UUID posx <- runif(10, 0, 10) posy <- runif(10, 0, 10) -sizey <- runif(10, 0.4, 2) +heights <- runif(10, 0.4, 2) angle <- runif(10, 0, 360) hor <- sample(c(TRUE, FALSE), 10, TRUE) ver <- sample(c(TRUE, FALSE), 10, TRUE) @@ -144,7 +144,7 @@ alpha <- runif(10, 0.3, 1) p <- ggplot(data.frame(cat.x = posx, cat.y = posy), aes(cat.x, cat.y)) + geom_blank() + add_phylopic(uuid = "23cd6aa4-9587-4a2e-8e26-de42885004c9", - x = posx, y = posy, height = sizey, + x = posx, y = posy, height = heights, fill = fills, alpha = alpha, angle = angle, horizontal = hor, vertical = ver) p + ggtitle("R Cat Herd!!") diff --git a/man/add_phylopic_base.Rd b/man/add_phylopic_base.Rd index 201051d1..0ba67c9e 100644 --- a/man/add_phylopic_base.Rd +++ b/man/add_phylopic_base.Rd @@ -40,13 +40,11 @@ Use "by" to limit results to images which do not require attribution, "nc" for images which allows commercial usage, and "sa" for images without a ShareAlike clause. The user can also combine these filters as a vector.} -\item{x}{\code{numeric}. x value of the silhouette center. Ignored if \code{y} and -\code{ysize} are not specified. If "NULL", the default, the mean value of the -x-axis is used.} +\item{x}{\code{numeric}. x value of the silhouette center. If "NULL", the +default, the mean value of the x-axis is used.} -\item{y}{\code{numeric}. y value of the silhouette center. Ignored if \code{x} and -\code{ysize} are not specified. If "NULL", the default, the mean value of the -y-axis is used.} +\item{y}{\code{numeric}. y value of the silhouette center. If "NULL", the +default, the mean value of the y-axis is used.} \item{ysize}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} use the \code{height} or \code{width} argument instead.} @@ -103,12 +101,13 @@ silhouettes on top of an existing base R plot (like \code{\link[=points]{points( } \details{ One (and only one) of \code{img}, \code{name}, or \code{uuid} must be specified. -Use parameters \code{x}, \code{y}, and \code{height}/\code{width} to place the silhouette at a -specified position on the plot. If all of these parameters are unspecified, -then the silhouette will be plotted to the full height and/or width of the -plot. The aspect ratio of \code{Picture} objects will always be maintained (even -when a plot is resized). However, if the plot is resized after plotting a -silhouette, the absolute size and/or position of the silhouette may change. +Use parameters \code{x}, \code{y}, \code{hjust}, and \code{vjust} to place the silhouette at a +specified position on the plot. If \code{height} and \code{width} are both +unspecified, then the silhouette will be plotted to the full height and/or +width of the plot. The aspect ratio of \code{Picture} objects will always be +maintained (even when a plot is resized). However, if the plot is resized +after plotting a silhouette, the absolute size and/or position of the +silhouette may change. Any argument (except for \code{remove_background}) may be a vector of values if multiple silhouettes should be plotted. In this case, all other arguments diff --git a/man/scales.Rd b/man/scales.Rd index 18a8cc96..a24f675c 100644 --- a/man/scales.Rd +++ b/man/scales.Rd @@ -3,7 +3,7 @@ \name{scale_height_continuous} \alias{scale_height_continuous} \alias{scale_width_continuous} -\title{Scales for phylopic heighgt or width} +\title{Scales for phylopic height or width} \usage{ scale_height_continuous( name = waiver(),