Skip to content

Instantly share code, notes, and snippets.

@jhrcook
Last active December 12, 2019 16:45
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 jhrcook/5c4f8d9aa382d2164d4cd826e1571a19 to your computer and use it in GitHub Desktop.
Save jhrcook/5c4f8d9aa382d2164d4cd826e1571a19 to your computer and use it in GitHub Desktop.
Pivot a wide data frame and plot with facets.
library(tidyverse)
#### MAKING MOCK DATA ####
# Some parameters for amount of data.
n_metabs <- 5
n_tissues <- 10
tissues <- purrr::map_chr(1:n_tissues, ~ paste0(sample(letters, 3), collapse=""))
# Make a wide table of data, adding on columns per metabolite
dfs <- tibble(tissue = tissues)
for (metab in LETTERS[1:n_metabs]) {
df <- tibble(vals = rnorm(n_tissues))
colnames(df) <- metab
dfs <- bind_cols(dfs, df)
}
# Add sensitive and insensitive labels.
dfs$sensitive <- c(rep("sens", n_tissues/2), rep("insens", n_tissues/2))
# Show final data frame.
dfs
#> # A tibble: 10 x 7
#> tissue A B C D E sensitive
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 edi 1.35 1.89 0.712 2.86 0.251 sens
#> 2 vxo 0.958 0.844 0.743 -0.915 2.34 sens
#> 3 cji -0.596 1.00 0.583 0.0501 -1.35 sens
#> 4 oit 1.36 -0.626 1.49 -0.900 0.537 sens
#> 5 tdj 1.47 -0.383 -2.59 1.22 -1.92 sens
#> 6 dru -0.841 2.11 -0.555 0.705 0.512 insens
#> 7 rhc -0.231 0.585 0.405 0.729 1.36 insens
#> 8 eqm -0.171 0.660 0.741 -0.241 -0.165 insens
#> 9 sop 0.115 -0.175 -0.601 -0.519 0.0214 insens
#> 10 fvo 1.03 0.984 -0.839 -0.430 -1.33 insens
#### PLOTTING ####
# Make a boxplot per metabolite.
dfs %>%
pivot_longer(c(-tissue, -sensitive), names_to = "metab", values_to = "values") %>%
ggplot(aes(x = sensitive, y = values)) +
facet_wrap(~ metab) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(size = 1, color = "dodgerblue") +
theme_bw(base_size = 7, base_family = "Arial")
ggsave("metab_boxplots.svg", width = 10, height = 10, unit = "cm")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment