From db1b1f45df02fbfb1f28775bba39c1b90c7d9364 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Mon, 10 Feb 2020 12:28:21 -0500 Subject: [PATCH 1/2] Add ggridges plot from https://github.com/ggobi/ggally/pull/258 --- DESCRIPTION | 3 ++- NAMESPACE | 1 + R/gg-plots.R | 30 ++++++++++++++++++++++++++++++ man/ggally_density_ridges.Rd | 28 ++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 man/ggally_density_ridges.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 0c79d2192..deab60eec 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -56,7 +56,8 @@ Suggests: rmarkdown, roxygen2, testthat, - crosstalk + crosstalk, + ggridges Roxygen: list(wrap = FALSE) RoxygenNote: 6.0.1 VignetteBuilder: packagedocs diff --git a/NAMESPACE b/NAMESPACE index 09a777bee..276ecc914 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -24,6 +24,7 @@ export(ggally_box_no_facet) export(ggally_cor) export(ggally_density) export(ggally_densityDiag) +export(ggally_density_ridges) export(ggally_denstrip) export(ggally_diagAxis) export(ggally_dot) diff --git a/R/gg-plots.R b/R/gg-plots.R index 6b5c44af9..ee222c590 100644 --- a/R/gg-plots.R +++ b/R/gg-plots.R @@ -1373,3 +1373,33 @@ ggally_na <- function(data = NULL, mapping = NULL, size = 10, color = "grey20", ggally_naDiag <- function(...) { ggally_na(...) } + +#' Create a ridgeline plot. +#' +#' `ggally_density_ridges` arranges multiple density plots in a staggered fashion, as in the cover of the famous Joy Division album Unknown Pleasures. +#' +#' @param data The data set used. +#' @param mapping The aesthetics used. +#' @param ... Other parameters passed on to \code{\link[ggridges]{geom_density_ridges}}. +#' +#' @examples +#' data(iris) +#' ggpairs(iris, lower = list("combo" = ggally_density_ridges)) +#' ggpairs(iris, lower = list("combo" = ggally_density_ridges, mapping = ggplot2::aes(color = Species))) +#' ggpairs(iris, lower = list("combo" = wrap(ggally_density_ridges, rel_min_height = 0.01), mapping = ggplot2::aes(color = Species))) +#' +#' @author Jens Preussner \email{jens.preussner@@mpi-bn.mpg.de} +#' @export +ggally_density_ridges <- function(data, mapping, ...) { + require_pkgs("ggridges") + horizontal <- GGally:::is_horizontal(data, mapping) + + if (!horizontal) { + mapping <- GGally:::mapping_swap_x_y(mapping) + } + + mapping <- GGally:::mapping_color_to_fill(mapping) + + ggplot2::ggplot(data) + + ggridges::geom_density_ridges2(mapping, ...) +} diff --git a/man/ggally_density_ridges.Rd b/man/ggally_density_ridges.Rd new file mode 100644 index 000000000..43148eed4 --- /dev/null +++ b/man/ggally_density_ridges.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/gg-plots.R +\name{ggally_density_ridges} +\alias{ggally_density_ridges} +\title{Create a ridgeline plot.} +\usage{ +ggally_density_ridges(data, mapping, ...) +} +\arguments{ +\item{data}{The data set used.} + +\item{mapping}{The aesthetics used.} + +\item{...}{Other parameters passed on to \code{\link[ggridges]{geom_density_ridges}}.} +} +\description{ +`ggally_density_ridges` arranges multiple density plots in a staggered fashion, as in the cover of the famous Joy Division album Unknown Pleasures. +} +\examples{ + data(iris) + ggpairs(iris, lower = list("combo" = ggally_density_ridges)) + ggpairs(iris, lower = list("combo" = ggally_density_ridges, mapping = ggplot2::aes(color = Species))) + ggpairs(iris, lower = list("combo" = wrap(ggally_density_ridges, rel_min_height = 0.01), mapping = ggplot2::aes(color = Species))) + +} +\author{ +Jens Preussner \email{jens.preussner@mpi-bn.mpg.de} +} From d1a4548d5bb81037b5b1d74f7c611eb5e0367f4d Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Mon, 10 Feb 2020 12:48:07 -0500 Subject: [PATCH 2/2] update code and docs to match current info/fns. Add scale = 1. --- R/gg-plots.R | 10 +++++----- R/ggpairs_internal_plots.R | 2 +- tests/testthat/test-zzz_ggpairs.R | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/R/gg-plots.R b/R/gg-plots.R index ee222c590..601af318d 100644 --- a/R/gg-plots.R +++ b/R/gg-plots.R @@ -1376,11 +1376,11 @@ ggally_naDiag <- function(...) { #' Create a ridgeline plot. #' -#' `ggally_density_ridges` arranges multiple density plots in a staggered fashion, as in the cover of the famous Joy Division album Unknown Pleasures. +#' `ggally_density_ridges` generates a ridgeline plot with partially overlapping line plots that create the impression of a mountain range. They can be quite useful for visualizing changes in distributions over time or space. #' #' @param data The data set used. #' @param mapping The aesthetics used. -#' @param ... Other parameters passed on to \code{\link[ggridges]{geom_density_ridges}}. +#' @param ... Other parameters passed on to \code{\link[ggridges]{geom_density_ridges2}}. #' #' @examples #' data(iris) @@ -1390,8 +1390,8 @@ ggally_naDiag <- function(...) { #' #' @author Jens Preussner \email{jens.preussner@@mpi-bn.mpg.de} #' @export -ggally_density_ridges <- function(data, mapping, ...) { - require_pkgs("ggridges") +ggally_density_ridges <- function(data, mapping, ..., scale = 1) { + require_namespaces("ggridges") horizontal <- GGally:::is_horizontal(data, mapping) if (!horizontal) { @@ -1401,5 +1401,5 @@ ggally_density_ridges <- function(data, mapping, ...) { mapping <- GGally:::mapping_color_to_fill(mapping) ggplot2::ggplot(data) + - ggridges::geom_density_ridges2(mapping, ...) + ggridges::geom_density_ridges2(mapping, ..., scale = scale) } diff --git a/R/ggpairs_internal_plots.R b/R/ggpairs_internal_plots.R index bc6375d28..7781fa042 100644 --- a/R/ggpairs_internal_plots.R +++ b/R/ggpairs_internal_plots.R @@ -109,7 +109,7 @@ wrap_fn_with_param_arg <- function( "The following ggpairs plot functions are readily available: \n", "\tcontinuous: c('points', 'smooth', 'smooth_loess', 'density', 'cor', 'blank')\n", "\tcombo: c('box', 'box_no_facet', 'dot', 'dot_no_facet', 'facethist',", - " 'facetdensity', 'denstrip', 'blank')\n", + " 'facetdensity', 'denstrip', 'density_ridges', 'blank')\n", "\tdiscrete: c('ratio', 'facetbar', 'blank')\n", "\tna: c('na', 'blank')\n", "\n", diff --git a/tests/testthat/test-zzz_ggpairs.R b/tests/testthat/test-zzz_ggpairs.R index e038ea853..df30c4a02 100644 --- a/tests/testthat/test-zzz_ggpairs.R +++ b/tests/testthat/test-zzz_ggpairs.R @@ -633,7 +633,7 @@ test_that("subtypes", { # re ordered the subs so that density can have no binwidth param conSubs <- list("density", "points", "smooth", "smooth_loess", "cor", "blank") comSubs <- list( - "box", "dot", "box_no_facet", "dot_no_facet", + "box", "dot", "box_no_facet", "dot_no_facet", "density_ridges", wrap("facethist", binwidth = 1), "facetdensity", wrap("denstrip", binwidth = 1), "blank"