Skip to content

Instantly share code, notes, and snippets.

@jbburant
Last active December 7, 2023 15:30
Show Gist options
  • Star 38 You must be signed in to star a gist
  • Fork 14 You must be signed in to fork a gist
  • Save jbburant/b3bd4961f3f5b03aeb542ed33a8fe062 to your computer and use it in GitHub Desktop.
Save jbburant/b3bd4961f3f5b03aeb542ed33a8fe062 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
library(tidyverse)
library(ggthemes)
## load source code
devtools::source_gist("2a1bb0133ff568cbe28d",
filename = "geom_flat_violin.R")
## sourced from github "dgrtwo/geom_flat_violin.R
## set plotting theme
theme_set(theme_few())
## import data
iris <- 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)")
@jbburant
Copy link
Author

rplot01

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment