knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "figure/", fig.height = 1 )
A package that facilitates nice colors created for the Buenrostro Lab. The base of the package including some divergent color schemes were taken from the wesanderson package. This README provides a quick overview of how to use the color schemes with ggplot2 and which palettes are available.
devtools::install_github("caleblareau/BuenColors")
library(BuenColors)
With the library loaded, just type this to get either the continuous
or
discrete
(by default) palette printed in your plot
console.
jdb_palette("FantasticFox") jdb_palette("aqua_brick", type = "continuous")
sort(names(jdb_palettes))
To keep consistent color designations, one can use the color_map
function to link features to their
specific hex color annoations. For example,
jdb_color_map(c("HSC"))
returns the hex code associated with HSC
in the Buenrostro Lab paradigm. This function may be applied
over multiple features--
jdb_color_map(c("HSC", "CMP", "HSC"))
and will error out when a feature is not recognized--
jdb_color_map(c("WHAT")) #> Error: all(name %in% names(jdb_color_maps)) is not TRUE
sort(names(jdb_color_maps))
df <- data.frame(names = names(jdb_color_maps), jdb_color_maps = unname(jdb_color_maps), stringsAsFactors = FALSE) ggplot(df, aes(x = names, y = -1, fill = names)) + geom_bar(stat = "identity") + pretty_plot(fontsize = 20) + scale_fill_manual(values = jdb_color_maps) + coord_flip() + theme(legend.position = "none")+ scale_y_continuous(expand = c(0, 0)) + labs(x = NULL, y = NULL, title = "Buenrostro Lab Cell Schemes") + theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank(), panel.border = element_blank())
To coordinate a ggplot feature (e.g. data point in a scatter plot) with a particular color, this post was a life-saver. Specifically, we'll use a named vector to coordinate the discrete values. Here's an example--
xy <- 1:7 cell <- c("GMP-A", "Ery", "CD4", "Ery", "LMPP", "ERY", "MEP") df <- data.frame( xy = xy, cell = cell, stringsAsFactors = FALSE ) ggplot(df, aes(x = xy, y = xy, color = cell)) + geom_point(size = 10) + pretty_plot() + scale_color_manual(values = jdb_color_maps)
P.S.-- this call will return a blank color for features that are not found in the color map ("ERY" in this example).
The above ggplot
command works because jdb_color_maps
(with an 's') exists as a named vector in the BuenColors
NAMESPACE. The provided function (jdb_color_map
) does not have an 's' by the way. This same syntax of supplying a named vector should work for all discrete color scale functionalities in ggplot
.
The trick here is to use scale_color_manual
like it is shown here--
library(ggplot2) ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) + geom_point() + pretty_plot() + scale_color_manual(values = jdb_palette("brewer_spectra"))
The trick here is to use scale_color_gradientn
like it is shown here--
df <- data.frame(x = rnorm(1000), y = 0) ggplot(df, aes(x=x, y=y, colour=x)) + geom_point() + scale_color_gradientn(colors = jdb_palette("flame_light")) + pretty_plot()
Best way that I've found to make the density color function represented in the points. Thanks to Kamil Slowikowski for figuring this out.
dat <- data.frame( x = c( rnorm(1e4, mean = 0, sd = 0.1), rnorm(1e3, mean = 0, sd = 0.1) ), y = c( rnorm(1e4, mean = 0, sd = 0.1), rnorm(1e3, mean = 0.1, sd = 0.2) ) ) dat$density <- get_density(dat$x, dat$y) ggplot2::ggplot(dat) + geom_point(aes(x, y, color = density)) + scale_color_gradientn(colors = jdb_palette("solar_extra")) + pretty_plot()
Quick wrapper using shuf
to change the order of plotting points
(to a random presentation) to avoid hiding effects.
tdf<-paste(system.file('rds',package='BuenColors'),'basicTSNE.rds',sep='/') df <- readRDS(tdf) ggplot(shuf(df)) + geom_point(aes(X1, X2, color = counts)) + scale_color_gradientn(colors = jdb_palette("solar_extra")) + pretty_plot()
# Generate this write.table(data.frame('jdb_palette("',sort(names(jdb_palettes)), '", type = "continuous")'), file = "choices_cont.txt",col.names = FALSE, quote = FALSE, row.names = FALSE, sep = "") write.table(data.frame('jdb_palette("',sort(names(jdb_palettes)), '")'), file = "choices_disc.txt",col.names = FALSE, quote = FALSE, row.names = FALSE, sep = "")
Here's what each palette looks like on a continuous scale.
jdb_palette("algae_earth", type = "continuous") jdb_palette("aqua_brick", type = "continuous") jdb_palette("aqua_tan", type = "continuous") jdb_palette("berry", type = "continuous") jdb_palette("blue_cyan", type = "continuous") jdb_palette("BottleRocket", type = "continuous") jdb_palette("BottleRocket2", type = "continuous") jdb_palette("brewer_blue", type = "continuous") jdb_palette("brewer_celsius", type = "continuous") jdb_palette("brewer_fire", type = "continuous") jdb_palette("brewer_green", type = "continuous") jdb_palette("brewer_heat", type = "continuous") jdb_palette("brewer_jamaica", type = "continuous") jdb_palette("brewer_marine", type = "continuous") jdb_palette("brewer_orange", type = "continuous") jdb_palette("brewer_purple", type = "continuous") jdb_palette("brewer_red", type = "continuous") jdb_palette("brewer_spectra", type = "continuous") jdb_palette("brewer_violet", type = "continuous") jdb_palette("brewer_yes", type = "continuous") jdb_palette("calma_azules", type = "continuous") jdb_palette("calma_bosque", type = "continuous") jdb_palette("calma_manudo", type = "continuous") jdb_palette("calma_marino", type = "continuous") jdb_palette("calma_morado", type = "continuous") jdb_palette("calma_musgos", type = "continuous") jdb_palette("Cavalcanti", type = "continuous") jdb_palette("Chevalier", type = "continuous") jdb_palette("china_basics", type = "continuous") jdb_palette("china_dragon", type = "continuous") jdb_palette("china_novice", type = "continuous") jdb_palette("china_ranges", type = "continuous") jdb_palette("china_sunset", type = "continuous") jdb_palette("china_theory", type = "continuous") jdb_palette("china_weirdo", type = "continuous") jdb_palette("citric", type = "continuous") jdb_palette("citric_yellow", type = "continuous") jdb_palette("citrus", type = "continuous") jdb_palette("corona", type = "continuous") jdb_palette("cyan_brick", type = "continuous") jdb_palette("cyan_green", type = "continuous") jdb_palette("cyan_pink", type = "continuous") jdb_palette("cyan_purple", type = "continuous") jdb_palette("cyan_tan", type = "continuous") jdb_palette("cyan_violet", type = "continuous") jdb_palette("Darjeeling", type = "continuous") jdb_palette("Darjeeling2", type = "continuous") jdb_palette("dark_blue", type = "continuous") jdb_palette("dark_citrus", type = "continuous") jdb_palette("dark_cyan", type = "continuous") jdb_palette("dark_violet", type = "continuous") jdb_palette("dusk_dawn", type = "continuous") jdb_palette("FantasticFox", type = "continuous") jdb_palette("flame_artic", type = "continuous") jdb_palette("flame_blind", type = "continuous") jdb_palette("flame_flame", type = "continuous") jdb_palette("flame_light", type = "continuous") jdb_palette("flame_macaw", type = "continuous") jdb_palette("flame_polar", type = "continuous") jdb_palette("flame_volts", type = "continuous") jdb_palette("flame_watts", type = "continuous") jdb_palette("flame_weird", type = "continuous") jdb_palette("flame_wings", type = "continuous") jdb_palette("forest", type = "continuous") jdb_palette("forest_citric", type = "continuous") jdb_palette("forest_yellow", type = "continuous") jdb_palette("GrandBudapest", type = "continuous") jdb_palette("GrandBudapest2", type = "continuous") jdb_palette("horizon", type = "continuous") jdb_palette("horizon_extra", type = "continuous") jdb_palette("lawhoops", type = "continuous") jdb_palette("Moonrise1", type = "continuous") jdb_palette("Moonrise2", type = "continuous") jdb_palette("Moonrise3", type = "continuous") jdb_palette("ocean_aqua", type = "continuous") jdb_palette("ocean_brick", type = "continuous") jdb_palette("ocean_citrus", type = "continuous") jdb_palette("ocean_earth", type = "continuous") jdb_palette("ocean_green", type = "continuous") jdb_palette("ocean_pink", type = "continuous") jdb_palette("ocean_red", type = "continuous") jdb_palette("ocean_teal", type = "continuous") jdb_palette("purple_baby", type = "continuous") jdb_palette("purple_pink", type = "continuous") jdb_palette("Royal1", type = "continuous") jdb_palette("Royal2", type = "continuous") jdb_palette("Rushmore", type = "continuous") jdb_palette("samba_color", type = "continuous") jdb_palette("samba_light", type = "continuous") jdb_palette("samba_night", type = "continuous") jdb_palette("solar_basic", type = "continuous") jdb_palette("solar_blues", type = "continuous") jdb_palette("solar_extra", type = "continuous") jdb_palette("solar_flare", type = "continuous") jdb_palette("solar_glare", type = "continuous") jdb_palette("solar_rojos", type = "continuous") jdb_palette("teal_orange", type = "continuous") jdb_palette("teal_violet", type = "continuous") jdb_palette("white_grove", type = "continuous") jdb_palette("white_jungle", type = "continuous") jdb_palette("white_mango", type = "continuous") jdb_palette("white_orange", type = "continuous") jdb_palette("white_tango", type = "continuous") jdb_palette("wolfgang_basic", type = "continuous") jdb_palette("wolfgang_extra", type = "continuous") jdb_palette("Zissou", type = "continuous")
Here are the discrete color units that go into each scale. If n is small and discrete, note that the colors that are selected are read from left to right.
jdb_palette("algae_earth") jdb_palette("aqua_brick") jdb_palette("aqua_tan") jdb_palette("berry") jdb_palette("blue_cyan") jdb_palette("BottleRocket") jdb_palette("BottleRocket2") jdb_palette("brewer_blue") jdb_palette("brewer_celsius") jdb_palette("brewer_fire") jdb_palette("brewer_green") jdb_palette("brewer_heat") jdb_palette("brewer_jamaica") jdb_palette("brewer_marine") jdb_palette("brewer_orange") jdb_palette("brewer_purple") jdb_palette("brewer_red") jdb_palette("brewer_spectra") jdb_palette("brewer_violet") jdb_palette("brewer_yes") jdb_palette("calma_azules") jdb_palette("calma_bosque") jdb_palette("calma_manudo") jdb_palette("calma_marino") jdb_palette("calma_morado") jdb_palette("calma_musgos") jdb_palette("Cavalcanti") jdb_palette("Chevalier") jdb_palette("china_basics") jdb_palette("china_dragon") jdb_palette("china_novice") jdb_palette("china_ranges") jdb_palette("china_sunset") jdb_palette("china_theory") jdb_palette("china_weirdo") jdb_palette("citric") jdb_palette("citric_yellow") jdb_palette("citrus") jdb_palette("corona") jdb_palette("cyan_brick") jdb_palette("cyan_green") jdb_palette("cyan_pink") jdb_palette("cyan_purple") jdb_palette("cyan_tan") jdb_palette("cyan_violet") jdb_palette("Darjeeling") jdb_palette("Darjeeling2") jdb_palette("dark_blue") jdb_palette("dark_citrus") jdb_palette("dark_cyan") jdb_palette("dark_violet") jdb_palette("dusk_dawn") jdb_palette("FantasticFox") jdb_palette("flame_artic") jdb_palette("flame_blind") jdb_palette("flame_flame") jdb_palette("flame_light") jdb_palette("flame_macaw") jdb_palette("flame_polar") jdb_palette("flame_volts") jdb_palette("flame_watts") jdb_palette("flame_weird") jdb_palette("flame_wings") jdb_palette("forest") jdb_palette("forest_citric") jdb_palette("forest_yellow") jdb_palette("GrandBudapest") jdb_palette("GrandBudapest2") jdb_palette("horizon") jdb_palette("horizon_extra") jdb_palette("lawhoops") jdb_palette("Moonrise1") jdb_palette("Moonrise2") jdb_palette("Moonrise3") jdb_palette("ocean_aqua") jdb_palette("ocean_brick") jdb_palette("ocean_citrus") jdb_palette("ocean_earth") jdb_palette("ocean_green") jdb_palette("ocean_pink") jdb_palette("ocean_red") jdb_palette("ocean_teal") jdb_palette("purple_baby") jdb_palette("purple_pink") jdb_palette("Royal1") jdb_palette("Royal2") jdb_palette("Rushmore") jdb_palette("samba_color") jdb_palette("samba_light") jdb_palette("samba_night") jdb_palette("solar_basic") jdb_palette("solar_blues") jdb_palette("solar_extra") jdb_palette("solar_flare") jdb_palette("solar_glare") jdb_palette("solar_rojos") jdb_palette("teal_orange") jdb_palette("teal_violet") jdb_palette("white_grove") jdb_palette("white_jungle") jdb_palette("white_mango") jdb_palette("white_orange") jdb_palette("white_tango") jdb_palette("wolfgang_basic") jdb_palette("wolfgang_extra") jdb_palette("Zissou")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.