Skip to content

Instantly share code, notes, and snippets.

@inutano
Forked from jbburant/half_violin_with_raw_data.R
Created February 22, 2018 02:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inutano/22c0942f67c0d3d7e1469377bcdd163e to your computer and use it in GitHub Desktop.
Save inutano/22c0942f67c0d3d7e1469377bcdd163e to your computer and use it in GitHub Desktop.
## GOAL:
## re-create a figure similar to Fig. 2 in Wilson et al. (2018),
## Nature 554: 183-188. Available from:
## https://www.nature.com/articles/nature25479#s1
##
## combines a boxplot (or violin) with the raw data, by splitting each
## category location in two (box on left, raw data on right)
# initial set-up ----------------------------------------------------------
## set working directory
getwd()
## call required packages
pkgs <- c("tidyverse", "ggthemes", "skimr")
lapply(pkgs, library, character.only = TRUE)
rm(pkgs)
## load source code
source("geom_flat_violin.R")
## sourced from github "dgrtwo/geom_flat_violin.R
## https://gist.github.com/dgrtwo/eb7750e74997891d7c20#file-geom_flat_violin-r
## set plotting theme
theme_set(theme_few())
## import data
iris <- iris
skim(iris)
# half violin plot with raw data ------------------------------------------
## create a violin plot of Sepal.Length per species
## using the custom function geom_flat_violin()
ggplot(data = iris,
mapping = aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_flat_violin(scale = "count", trim = FALSE) +
stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1),
geom = "pointrange", position = position_nudge(0.05)) +
geom_dotplot(binaxis = "y", dotsize = 0.5, stackdir = "down", binwidth = 0.1,
position = position_nudge(-0.025)) +
theme(legend.position = "none") +
labs(x = "Species", y = "Sepal length (cm)")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment