Skip to content

Instantly share code, notes, and snippets.

@ellcs
Forked from jbburant/half_violin_with_raw_data.R
Created November 22, 2022 20:38
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 ellcs/53524bffd4cfaef0cf1dc1f95cc4a965 to your computer and use it in GitHub Desktop.
Save ellcs/53524bffd4cfaef0cf1dc1f95cc4a965 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)")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment