I have been curating a personal R package for a few months now, to try and organise the many snippets of R code that I tend to reuse in different projects. The package isn’t on CRAN, but it is on Github for anybody interested. One of the functions I keep is essentially a list of qualitative colour palettes. Some are my original creations, but most are lifted from other packages, or examples I’ve seen somewhere online. It’s incredibly difficult to come up with categorical colour schemes for more than about five categories, and it can be frustrating trying to find colour combinations which maximise readability across a range of colour-blindness conditions, and which look good.
These colours come from CARTOColors :
Antique:
![antique antique](/img/qualpal/carto_colors_antique.png)
Bold:
![bold bold](/img/qualpal/carto_colors_bold.png)
Pastel:
![pastel pastel](/img/qualpal/carto_colors_pastel.png)
Prism:
![prism prism](/img/qualpal/carto_colors_prism.png)
Safe:
![safe safe](/img/qualpal/carto_colors_safe.png)
Vivid:
![vivid vivid](/img/qualpal/carto_colors_vivid.png)
These colours come from ColorBrewer :
Dark2:
![dark2 dark2](/img/qualpal/color_brewer_dark2.png)
Set1:
![set1 set1](/img/qualpal/color_brewer_set1.png)
Set3:
![set3 set3](/img/qualpal/color_brewer_set3.png)
These colours come from Anton Tsitsulin’s Optimal qualitative colour palettes :
Bright6:
![bright6 bright6](/img/qualpal/coloropt_bright6.png)
Dark6:
![dark6 dark6](/img/qualpal/coloropt_dark6.png)
Fancy6:
![fancy6 fancy6](/img/qualpal/coloropt_fancy6.png)
Normal6:
![normal6 normal6](/img/qualpal/coloropt_normal6.png)
Normal12:
![normal12 normal12](/img/qualpal/coloropt_normal12.png)
Tarnish6:
![tarnish6 tarnish6](/img/qualpal/coloropt_tarnish6.png)
These are from Python’s Seaborn colours :
Colorblind:
![colorblind colorblind](/img/qualpal/seaborn_colorblind.png)
Deep:
![deep deep](/img/qualpal/seaborn_deep.png)
Muted:
![muted muted](/img/qualpal/seaborn_muted.png)
Default:
![default default](/img/qualpal/seaborn_default.png)
This is the Solarized accent colours :
![solarized accent solarized accent](/img/qualpal/solarized_accent.png)
And these are my own colours:
Movie:
![movie movie](/img/qualpal/movie_4.png)
Highlighter:
![highlighter highlighter](/img/qualpal/highlighter.png)
The function, in case you want to just copy the hex codes:
#' Qualitative colour palettes
#' @return named list of qualitative colour palettes as vectors of hex-codes
#'
#' @details The \code{color_brewer_*} palettes come from \url{https://colorbrewer2.org/}.
#' The \code{seaborn_*} palettes come from \url{https://seaborn.pydata.org/}.
#' The \code{carto_colors_*} palettes come from \url{https://carto.com/carto-colors/}.
#' The \code{solarized_accent} palette comes from \url{https://ethanschoonover.com/solarized/}.
#' The \code{coloropt_*} palettes come from \url{http://tsitsul.in/blog/coloropt/}.
#' Other palettes are original.
#'
#' @examples
#' qualPal()[[1]]
#'
#' @export
#'
qualPal <- function() {
list(
movie_4 = c("#117733", "#b58900", "#855C75", "#ED645A"),
highlighter = c("#bbdf20", "#20dfa3", "#4420df", "#df205c"),
color_brewer_set1 = c("#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999"),
color_brewer_dark2 = c("#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e", "#e6ab02", "#a6761d", "#666666"),
color_brewer_set3 = c("#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5"),
seaborn_default = c("#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF"),
seaborn_muted = c("#4878D0", "#EE854A", "#6ACC64", "#D65F5F", "#956CB4", "#8C613C", "#DC7EC0", "#797979", "#D5BB67", "#82C6E2"),
seaborn_colorblind = c("#0173B2", "#DE8F05", "#029E73", "#D55E00", "#CC78BC", "#CA9161", "#FBAFE4", "#949494", "#ECE133", "#58B4E9"),
seaborn_deep = c("#4C72B0", "#DD8452", "#55A868", "#C44E52", "#8172B3", "#937860", "#DA8BC3", "#8C8C8C", "#CCB974", "#64B5CD"),
solarized_accent = c("#b58900", "#cb4b16", "#dc322f", "#d33682", "#6c71c4", "#268bd2", "#2aa198", "#859900"),
carto_colors_antique = c("#855C75", "#D9AF6B", "#AF6458", "#736F4C", "#526A83", "#625377", "#68855C", "#9C9C5E", "#A06177", "#8C785D", "#467378", "#7C7C7C"),
carto_colors_bold = c("#7F3C8D", "#11A579", "#3969AC", "#F2B701", "#E73F74", "#80BA5A", "#E68310", "#008695", "#CF1C90", "#f97b72", "#4b4b8f", "#A5AA99"),
carto_colors_pastel = c("#66C5CC", "#F6CF71", "#F89C74", "#DCB0F2", "#87C55F", "#9EB9F3", "#FE88B1", "#C9DB74", "#8BE0A4", "#B497E7", "#D3B484", "#B3B3B3"),
carto_colors_prism = c("#5F4690", "#1D6996", "#38A6A5", "#0F8554", "#73AF48", "#EDAD08", "#E17C05", "#CC503E", "#94346E", "#6F4070", "#994E95", "#666666"),
carto_colors_safe = c("#88CCEE", "#CC6677", "#DDCC77", "#117733", "#332288", "#AA4499", "#44AA99", "#999933", "#882255", "#661100", "#6699CC", "#888888"),
carto_colors_vivid = c("#E58606", "#5D69B1", "#52BCA3", "#99C945", "#CC61B0", "#24796C", "#DAA51B", "#2F8AC4", "#764E9F", "#ED645A", "#CC3A8E", "#A5AA99"),
coloropt_normal6 = c("#4053D3", "#DDB310", "#B51D14", "#00BEFF", "#FB49B0", "#00B25D", "#CACACA"),
coloropt_bright6 = c("#EFE645", "#E935A1", "#00E3FF", "#E1562C", "#537EFF", "#00CB85", "#EEEEEE"),
coloropt_dark6 = c("#005900", "#000078", "#490D00", "#8A034F", "#005A8A", "#443500", "#585858"),
coloropt_fancy6 = c("#56641A", "#C0AFFB", "#E6A176", "#00678A", "#984464", "#5ECCAB", "#CDCDCD"),
coloropt_tarnish6 = c("#274D52", "#C7A2A6", "#818B70", "#604E3C", "#8C9FB7", "#796880", "#C0C0C0"),
coloropt_normal12 = c("#EBAC23", "#B80058", "#008CF9", "#006E00", "#00BBAD", "#D163E6", "#B24502", "#FF9287", "#5954D6", "#00C6F8", "#878500", "#00A76C", "#BDBDBD")
)
}