For work (single cell RNA-seq) I make and look at countless plots. Though most packages attempt to be colorblind-aware/friendly, I often find results uninterpretable when over a handful of colors are used. Some helpful strategies include: scatterHatch, adding different hatch patterns to clusters on top of colors; ggtrace; plotly interactivity; etc. But perhaps a simpler solution can be used – avoid using visually similar colors next to each other (ie. on a UMAP, neighboring clusters should never be light yellow and slightly darker yellow). In 1D plots (barplot, violin plots, etc), we’d simply pass a vector of dissimilar colors. Not so easy to do when 2D and many colors are involved. Hence this simple package.
devtools::install_github("https://github.com/raysinensis/color_repel")
library(colorrepel)
?gg_color_repel # overall wrapper function
a <- Seurat::DimPlot(so, group.by = "type", pt.size = 0.5)
b <- a + scale_color_manual(values = color_repel(a, sim = colorspace::tritan))
cowplot::plot_grid(a, b,
labels = c("original", "color_repel"))
a <- readRDS("bar_gg.rds")
b <- a + scale_fill_viridis_d(option = "H")
c <- b + scale_fill_manual(values = color_repel(b, col = "fill"))
# or use wrapper
c <- gg_color_repel(b, col = "fill")
cowplot::plot_grid(a,b,c, labels = c("default", "viridis", "color_repel"), nrow = 1)
a <- Seurat::DimPlot(so, group.by = "type", pt.size = 0.5)
gg_color_repel(a, encircle = T)
Also see it in action here: https://raysinensis.shinyapps.io/spatialshiny_adr/
–>