#' Half-violin Half-dot plot
#'
#' Create a half-violin half-dot plot, useful for visualising the distribution
#' and the sample size at the same time.
#'
#' @inheritParams geom_violinhalf
#' @inheritParams ggplot2::geom_dotplot
#' @param position_dots Position adjustment for dots, either as a string, or the
#' result of a call to a position adjustment function.
#' @param size_dots,dots_size Size adjustment for dots.
#' @param color_dots,dots_color Color adjustment for dots.
#' @param fill_dots,dots_fill Fill adjustment for dots.
#' @examples
#' library(ggplot2)
#' library(see)
#'
#' ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
#' geom_violindot() +
#' theme_modern()
#'
#' @export
geom_violindot <- function(mapping = NULL,
data = NULL,
trim = TRUE,
scale = c("area", "count", "width"),
show.legend = NA,
inherit.aes = TRUE,
dots_size = 0.7,
dots_color = NULL,
dots_fill = NULL,
binwidth = 0.05,
position_dots = ggplot2::position_nudge(x = -0.025, y = 0),
...,
size_dots = dots_size,
color_dots = dots_color,
fill_dots = dots_fill) {
scale <- match.arg(scale)
if (is.null(color_dots) && is.null(fill_dots)) {
dotplot <- geom_dotplot(
binaxis = "y",
mapping = mapping,
data = data,
dotsize = size_dots,
stackdir = "down",
binwidth = binwidth,
position = position_dots,
show.legend = FALSE,
...
)
} else if (!is.null(color_dots) && is.null(fill_dots)) {
dotplot <- geom_dotplot(
color = color_dots,
mapping = mapping,
data = data,
binaxis = "y",
dotsize = size_dots,
stackdir = "down",
binwidth = binwidth,
position = position_dots,
show.legend = FALSE,
...
)
} else if (is.null(color_dots) && !is.null(fill_dots)) {
dotplot <- geom_dotplot(
fill = fill_dots,
mapping = mapping,
data = data,
binaxis = "y",
dotsize = size_dots,
stackdir = "down",
binwidth = binwidth,
position = position_dots,
show.legend = FALSE,
...
)
} else {
dotplot <- geom_dotplot(
color = color_dots,
fill = fill_dots,
mapping = mapping,
data = data,
binaxis = "y",
dotsize = size_dots,
stackdir = "down",
binwidth = binwidth,
position = position_dots,
show.legend = FALSE,
...
)
}
list(
geom_violinhalf(
mapping = mapping,
data = data,
stat = "ydensity",
position = "dodge",
trim = trim,
scale = scale,
show.legend = show.legend,
inherit.aes = inherit.aes,
...
),
dotplot
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.