{"id":8184,"date":"2018-11-13T09:28:49","date_gmt":"2018-11-13T07:28:49","guid":{"rendered":"https:\/\/www.datanovia.com\/en\/?p=8184"},"modified":"2019-12-25T11:18:31","modified_gmt":"2019-12-25T09:18:31","slug":"top-r-color-palettes-to-know-for-great-data-visualization","status":"publish","type":"post","link":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/","title":{"rendered":"Top R Color Palettes to Know for Great Data Visualization"},"content":{"rendered":"<div id=\"rdoc\">\n<p>This article presents the top <strong>R color palettes<\/strong> for changing the default color of a graph generated using either the <em>ggplot2<\/em> package or the <em>R base plot<\/em> functions.<\/p>\n<p>You\u2019ll learn how to use the top 6 predefined color palettes in R, available in different R packages:<\/p>\n<ul>\n<li>Viridis color scales [<code>viridis<\/code> package].<\/li>\n<li>Colorbrewer palettes [<code>RColorBrewer<\/code> package]<\/li>\n<li>Grey color palettes [<code>ggplot2<\/code> package]<\/li>\n<li>Scientific journal color palettes [<code>ggsci<\/code> package]<\/li>\n<li>Wes Anderson color palettes [<code>wesanderson<\/code> package]<\/li>\n<li>R base color palettes: <code>rainbow<\/code>, <code>heat.colors<\/code>, <code>cm.colors<\/code>.<\/li>\n<\/ul>\n<p>Note that, the \u201crainbow\u201d and \u201cheat\u201d color palettes are less perceptually uniform compared to the other color scales. The \u201cviridis\u201d scale stands out for its large perceptual range. It makes as much use of the available color space as possible while maintaining uniformity.<\/p>\n<p>When <a href=\"https:\/\/cran.r-project.org\/web\/packages\/viridis\/vignettes\/intro-to-viridis.html\">comparing these color palettes<\/a> as they might appear under various forms of colorblindness, the <code>viridis<\/code> palettes remain the most robust.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-r-color-scales-1.png\" width=\"576\" \/><\/p>\n<p>Contents:<\/p>\n<div id=\"TOC\">\n<ul>\n<li><a href=\"#demo-dataset\">Demo dataset<\/a><\/li>\n<li><a href=\"#create-a-basic-ggplot-colored-by-groups\">Create a basic ggplot colored by groups<\/a><\/li>\n<li><a href=\"#viridis-color-palettes\">Viridis color palettes<\/a><\/li>\n<li><a href=\"#rcolorbrewer-palettes\">RColorBrewer palettes<\/a><\/li>\n<li><a href=\"#grey-color-palettes\">Grey color palettes<\/a><\/li>\n<li><a href=\"#scientific-journal-color-palettes\">Scientific journal color palettes<\/a><\/li>\n<li><a href=\"#wes-anderson-color-palettes\">Wes Anderson color palettes<\/a><\/li>\n<li><a href=\"#r-base-color-palettes\">R base color palettes<\/a><\/li>\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<\/ul>\n<\/div>\n<div id=\"demo-dataset\" class=\"section level2\">\n<h2>Demo dataset<\/h2>\n<p>We\u2019ll use the R built-in <code>iris<\/code> demo dataset.<\/p>\n<pre class=\"r\"><code>head(iris, 6)<\/code><\/pre>\n<pre><code>##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species\r\n## 1          5.1         3.5          1.4         0.2  setosa\r\n## 2          4.9         3.0          1.4         0.2  setosa\r\n## 3          4.7         3.2          1.3         0.2  setosa\r\n## 4          4.6         3.1          1.5         0.2  setosa\r\n## 5          5.0         3.6          1.4         0.2  setosa\r\n## 6          5.4         3.9          1.7         0.4  setosa<\/code><\/pre>\n<\/div>\n<div id=\"create-a-basic-ggplot-colored-by-groups\" class=\"section level2\">\n<h2>Create a basic ggplot colored by groups<\/h2>\n<p>You can change colors according to a grouping variable by:<\/p>\n<ul>\n<li>Mapping the argument <code>color<\/code> to the variable of interest. This will be applied to points, lines and texts<\/li>\n<li>Mapping the argument <code>fill<\/code> to the variable of interest. This will change the fill color of areas, such as in box plot, bar plot, histogram, density plots, etc.<\/li>\n<\/ul>\n<p>In our example, we\u2019ll map the options <code>color<\/code> and <code>fill<\/code> to the grouping variable <code>Species<\/code>, for scatter plot and box plot, respectively.<\/p>\n<p>Changes colors by groups using the levels of <code>Species<\/code> variable:<\/p>\n<pre class=\"r\"><code>library(\"ggplot2\")\r\n# Box plot\r\nbp &lt;- ggplot(iris, aes(Species, Sepal.Length)) + \r\n  geom_boxplot(aes(fill = Species)) +\r\n  theme_minimal() +\r\n  theme(legend.position = \"top\")\r\nbp\r\n\r\n# Scatter plot\r\nsp &lt;- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + \r\n  geom_point(aes(color = Species)) +\r\n  theme_minimal()+\r\n  theme(legend.position = \"top\")\r\nsp<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-ggplot-default-colors-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-ggplot-default-colors-2.png\" width=\"336\" \/><\/p>\n<\/div>\n<div id=\"viridis-color-palettes\" class=\"section level2\">\n<h2>Viridis color palettes<\/h2>\n<p>The <code>viridis<\/code> R package (by Simon Garnier) provides color palettes to make beautiful plots that are: printer-friendly, perceptually uniform and easy to read by those with colorblindness.<\/p>\n<p>Install and load the package as follow:<\/p>\n<pre class=\"r\"><code>install.packages(\"viridis\")  # Install\r\nlibrary(\"viridis\")           # Load<\/code><\/pre>\n<p>The <code>viridis<\/code> package contains four sequential color scales: \u201cViridis\u201d (the primary choice) and three alternatives with similar properties (\u201cmagma\u201d, \u201cplasma\u201d, and \u201cinferno\u201d).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-viridis-color-scales-1.png\" width=\"576\" \/><\/p>\n<p>Key functions:<\/p>\n<ul>\n<li><code>scale_color_viridis()<\/code>: Change the color of points, lines and texts<\/li>\n<li><code>scale_fill_viridis()<\/code>: Change the fill color of areas (box plot, bar plot, etc)<\/li>\n<li><code>viridis(n)<\/code>, <code>magma(n)<\/code>, <code>inferno(n)<\/code> and <code>plasma(n)<\/code>: Generate color palettes for base plot, where <code>n<\/code> is the number of colors to returns.<\/li>\n<\/ul>\n<div class=\"notice\">\n<p>Note that, the function <code>scale_color_viridis()<\/code> and <code>scale_fill_viridis()<\/code> have an argument named <code>option<\/code>, which is a character string indicating the colormap option to use. Four options are available: \u201cmagma\u201d (or \u201cA\u201d), \u201cinferno\u201d (or \u201cB\u201d), \u201cplasma\u201d (or \u201cC\u201d), and \u201cviridis\u201d (or \u201cD\u201d, the default option).<\/p>\n<\/div>\n<ol style=\"list-style-type: decimal;\">\n<li>Usage in ggplot2<\/li>\n<\/ol>\n<pre class=\"r\"><code>library(ggplot2)\r\n# Gradient color\r\nggplot(iris, aes(Sepal.Length, Sepal.Width))+\r\n  geom_point(aes(color = Sepal.Length)) +\r\n  scale_color_viridis(option = \"D\")+\r\n  theme_minimal() +\r\n  theme(legend.position = \"bottom\")\r\n\r\n# Discrete color. use the argument discrete = TRUE\r\nggplot(iris, aes(Sepal.Length, Sepal.Width))+\r\n  geom_point(aes(color = Species)) +\r\n  geom_smooth(aes(color = Species, fill = Species), method = \"lm\") + \r\n  scale_color_viridis(discrete = TRUE, option = \"D\")+\r\n  scale_fill_viridis(discrete = TRUE) +\r\n  theme_minimal() +\r\n  theme(legend.position = \"bottom\")<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-ggplot2-viridis-discrete-color-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-ggplot2-viridis-discrete-color-2.png\" width=\"336\" \/><\/p>\n<ol style=\"list-style-type: decimal;\" start=\"2\">\n<li>Usage in base plot. Use the function <code>viridis()<\/code> to generate the number of colors you want:<\/li>\n<\/ol>\n<pre class=\"r\"><code>barplot(1:10, col = viridis(10))<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-base-plot-viridis-1.png\" width=\"336\" \/><\/p>\n<\/div>\n<div id=\"rcolorbrewer-palettes\" class=\"section level2\">\n<h2>RColorBrewer palettes<\/h2>\n<p>The RColorBrewer package creates a nice looking color palettes. You should first install it as follow: <code>install.packages(\"RColorBrewer\")<\/code>.<\/p>\n<p>To display all the color palettes in the package, type this:<\/p>\n<pre class=\"r\"><code>library(RColorBrewer)\r\ndisplay.brewer.all()<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-rcolorbrewer-palettes-1.png\" width=\"384\" \/><\/p>\n<p>The package contains 3 types of color palettes: sequential, diverging, and qualitative.<\/p>\n<div class=\"block\">\n<ol style=\"list-style-type: decimal;\">\n<li><strong>Sequential palettes<\/strong> (first list of colors), which are suited to ordered data that progress from low to high (gradient). The palettes names are : Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu YlOrBr, YlOrRd.<\/li>\n<li><strong>Qualitative palettes<\/strong> (second list of colors), which are best suited to represent nominal or categorical data. They not imply magnitude differences between groups. The palettes names are : Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3.<\/li>\n<li><strong>Diverging palettes<\/strong> (third list of colors), which put equal emphasis on mid-range critical values and extremes at both ends of the data range. The diverging palettes are : BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral<\/li>\n<\/ol>\n<\/div>\n<p>The RColorBrewer package include also three important functions:<\/p>\n<pre class=\"r\"><code># 1. Return the hexadecimal color specification \r\nbrewer.pal(n, name)\r\n\r\n# 2. Display a single RColorBrewer palette \r\n# by specifying its name\r\ndisplay.brewer.pal(n, name)\r\n\r\n# 3. Display all color palette\r\ndisplay.brewer.all(n = NULL, type = \"all\", select = NULL,\r\n                   colorblindFriendly = FALSE)<\/code><\/pre>\n<p>Description of the function arguments:<\/p>\n<ul>\n<li><code>n<\/code>: Number of different colors in the palette, minimum 3, maximum depending on palette.<\/li>\n<li><code>name<\/code>: A palette name from the lists above. For example <code>name = RdBu<\/code>.<\/li>\n<li><code>type<\/code>: The type of palette to display. Allowed values are one of: \u201cdiv\u201d, \u201cqual\u201d, \u201cseq\u201d, or \u201call\u201d.<\/li>\n<li><code>select<\/code>: A list of palette names to display.<\/li>\n<li><code>colorblindFriendly<\/code>: if TRUE, display only colorblind friendly palettes.<\/li>\n<\/ul>\n<p>To display only colorblind-friendly brewer palettes, use this R code:<\/p>\n<pre class=\"r\"><code>display.brewer.all(colorblindFriendly = TRUE)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-rcolorbrewer-palettes-colorblind-friendly-1.png\" width=\"384\" \/><\/p>\n<p>You can also view a single RColorBrewer palette by specifying its name as follow :<\/p>\n<pre class=\"r\"><code># View a single RColorBrewer palette by specifying its name\r\ndisplay.brewer.pal(n = 8, name = 'Dark2')<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-display-rcolorbrewer-single-palette-1.png\" width=\"384\" \/><\/p>\n<pre class=\"r\"><code># Hexadecimal color specification \r\nbrewer.pal(n = 8, name = \"Dark2\")<\/code><\/pre>\n<pre><code>## [1] \"#1B9E77\" \"#D95F02\" \"#7570B3\" \"#E7298A\" \"#66A61E\" \"#E6AB02\" \"#A6761D\"\r\n## [8] \"#666666\"<\/code><\/pre>\n<p>Usage in ggplot2. Two color scale functions are available in ggplot2 for using the colorbrewer palettes:<\/p>\n<ul>\n<li><code>scale_fill_brewer()<\/code> for box plot, bar plot, violin plot, dot plot, etc<\/li>\n<li><code>scale_color_brewer()<\/code> for lines and points<\/li>\n<\/ul>\n<pre class=\"r\"><code># Box plot\r\nbp + scale_fill_brewer(palette = \"Dark2\")\r\n\r\n# Scatter plot\r\nsp + scale_color_brewer(palette = \"Dark2\")<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-group-color-rcolorbrewer-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-group-color-rcolorbrewer-2.png\" width=\"336\" \/><\/p>\n<p>Usage in base plots. The function <code>brewer.pal()<\/code> is used to generate a vector of colors.<\/p>\n<pre class=\"r\"><code># Barplot using RColorBrewer\r\nbarplot(c(2,5,7), col = brewer.pal(n = 3, name = \"RdBu\"))<\/code><\/pre>\n<\/div>\n<div id=\"grey-color-palettes\" class=\"section level2\">\n<h2>Grey color palettes<\/h2>\n<p>Key functions:<\/p>\n<ul>\n<li><code>scale_fill_grey()<\/code> for box plot, bar plot, violin plot, dot plot, etc<\/li>\n<li><code>scale_colour_grey()<\/code> for points, lines, etc<\/li>\n<\/ul>\n<pre class=\"r\"><code># Box plot\r\nbp + scale_fill_grey(start = 0.8, end = 0.2) \r\n\r\n# Scatter plot\r\nsp + scale_color_grey(start = 0.8, end = 0.2) <\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-scale-color-grey-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-scale-color-grey-2.png\" width=\"336\" \/><\/p>\n<\/div>\n<div id=\"scientific-journal-color-palettes\" class=\"section level2\">\n<h2>Scientific journal color palettes<\/h2>\n<p>The R package <code>ggsci<\/code> contains a collection of high-quality color palettes inspired by colors used in scientific journals, data visualization libraries, and more.<\/p>\n<p>The color palettes are provided as ggplot2 scale functions:<\/p>\n<ul>\n<li><code>scale_color_npg()<\/code> and <code>scale_fill_npg()<\/code>: Nature Publishing Group color palettes<\/li>\n<li><code>scale_color_aaas()<\/code> and <code>scale_fill_aaas()<\/code>: American Association for the Advancement of Science color palettes<\/li>\n<li><code>scale_color_lancet()<\/code> and <code>scale_fill_lancet()<\/code>: Lancet journal color palettes<\/li>\n<li><code>scale_color_jco()<\/code> and <code>scale_fill_jco()<\/code>: Journal of Clinical Oncology color palettes<\/li>\n<li><code>scale_color_tron()<\/code> and <code>scale_fill_tron()<\/code>: This palette is inspired by the colors used in Tron Legacy. It is suitable for displaying data when using a dark theme.<\/li>\n<\/ul>\n<p>You can find more examples in the <a href=\"https:\/\/cran.r-project.org\/web\/packages\/ggsci\/vignettes\/ggsci.html\">ggsci package vignettes<\/a>.<\/p>\n<div class=\"notice\">\n<p>Note that for base plots, you can use the corresponding palette generator for creating a list of colors. For example, you can use: pal_npg(), pal_aaas(), pal_lancet(), pal_jco(), and so on.<\/p>\n<\/div>\n<ol style=\"list-style-type: decimal;\">\n<li>Usage in ggplot2. We\u2019ll use JCO and the Tron Legacy color palettes.<\/li>\n<\/ol>\n<pre class=\"r\"><code>library(\"ggplot2\")\r\nlibrary(\"ggsci\")\r\n# Change area fill color. JCO palette\r\nggplot(iris, aes(Species, Sepal.Length)) +\r\n  geom_boxplot(aes(fill = Species)) +\r\n  scale_fill_jco()+\r\n  theme_classic() +\r\n  theme(legend.position = \"top\")\r\n\r\n# Change point color and the confidence band fill color. \r\n# Use tron palette on dark theme\r\nggplot(iris, aes(Sepal.Length, Sepal.Width)) +\r\n  geom_point(aes(color = Species)) +\r\n  geom_smooth(aes(color = Species, fill = Species)) + \r\n  scale_color_tron()+\r\n  scale_fill_tron()+\r\n  theme_dark() +\r\n  theme(\r\n    legend.position = \"top\",\r\n    panel.background = element_rect(fill = \"#2D2D2D\"),\r\n    legend.key = element_rect(fill = \"#2D2D2D\")\r\n    )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-ggsci-scientific-journal-color-palettes-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-ggsci-scientific-journal-color-palettes-2.png\" width=\"336\" \/><\/p>\n<ol style=\"list-style-type: decimal;\" start=\"2\">\n<li>Usage in base plots<\/li>\n<\/ol>\n<pre class=\"r\"><code>par(mar = c(1, 3.5, 1, 1))\r\nbarplot(1:10, col = pal_jco()(10))<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-ggsci-base-plots-1.png\" width=\"336\" \/><\/p>\n<\/div>\n<div id=\"wes-anderson-color-palettes\" class=\"section level2\">\n<h2>Wes Anderson color palettes<\/h2>\n<p>Install the latest developmental version from Github (<code>devtools::install_github(\"karthik\/wesanderson\")<\/code>) or install from CRAN (<code>install.packages(\"wesanderson\")<\/code>).<\/p>\n<p>It contains 16 color palettes from Wes Anderson movies:<\/p>\n<pre class=\"r\"><code>library(wesanderson)\r\nnames(wes_palettes)<\/code><\/pre>\n<pre><code>##  [1] \"BottleRocket1\"  \"BottleRocket2\"  \"Rushmore1\"      \"Royal1\"        \r\n##  [5] \"Royal2\"         \"Zissou1\"        \"Darjeeling1\"    \"Darjeeling2\"   \r\n##  [9] \"Chevalier1\"     \"FantasticFox1\"  \"Moonrise1\"      \"Moonrise2\"     \r\n## [13] \"Moonrise3\"      \"Cavalcanti1\"    \"GrandBudapest1\" \"GrandBudapest2\"<\/code><\/pre>\n<p>The key R function in the package, for generating a vector of colors, is<\/p>\n<pre class=\"r\"><code>wes_palette(name, n, type = c(\"discrete\", \"continuous\"))<\/code><\/pre>\n<ul>\n<li><code>name<\/code>: Name of desired palette<\/li>\n<li><code>n<\/code>: Number of colors desired. Unfortunately most palettes now only have 4 or 5 colors.<\/li>\n<li><code>type<\/code>: Either \u201ccontinuous\u201d or \u201cdiscrete\u201d. Use continuous if you want to automatically interpolate between colours.<\/li>\n<\/ul>\n<div class=\"notice\">\n<p>If you need more colours than normally found in a palette, you can use a continuous palette to interpolate between existing colours.<\/p>\n<\/div>\n<p>The available color palettes are :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-wes-anderson-color-palettes-r-1.png\" width=\"480\" \/><\/p>\n<p>Usage in ggplot2:<\/p>\n<pre class=\"r\"><code>library(wesanderson)\r\n# Discrete color\r\nbp + scale_fill_manual(values = wes_palette(\"GrandBudapest1\", n = 3))\r\n\r\n# Gradient color\r\npal &lt;- wes_palette(\"Zissou1\", 100, type = \"continuous\")\r\nggplot(heatmap, aes(x = X2, y = X1, fill = value)) +\r\n  geom_tile() + \r\n  scale_fill_gradientn(colours = pal) + \r\n  scale_x_discrete(expand = c(0, 0)) +\r\n  scale_y_discrete(expand = c(0, 0)) + \r\n  coord_equal() <\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-wes-anderson-color-palettes-r-ggplot2-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-wes-anderson-color-palettes-r-ggplot2-2.png\" width=\"336\" \/><\/p>\n<p>Usage in base plots:<\/p>\n<pre class=\"r\"><code>barplot(1:10, col = wes_palette(\"Zissou1\", 10, type = \"continuous\"))<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-wes-anderson-base-plots-1.png\" width=\"384\" \/><\/p>\n<\/div>\n<div id=\"r-base-color-palettes\" class=\"section level2\">\n<h2>R base color palettes<\/h2>\n<p>There are 5 R base functions that can be used to generate a vector of n contiguous colors: <code>rainbow(n)<\/code>, <code>heat.colors(n)<\/code>, <code>terrain.colors(n)<\/code>, <code>topo.colors(n)<\/code>, and <code>cm.colors(n)<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/ggplot2\/figures\/029-r-color-palettes-r-base-color-palettes-contiguous-colors-1.png\" width=\"576\" \/><\/p>\n<p>Usage in R base plots:<\/p>\n<pre class=\"r\"><code>barplot(1:5, col=rainbow(5))\r\n# Use heat.colors\r\nbarplot(1:5, col=heat.colors(5))\r\n# Use terrain.colors\r\nbarplot(1:5, col=terrain.colors(5))\r\n# Use topo.colors\r\nbarplot(1:5, col=topo.colors(5))\r\n# Use cm.colors\r\nbarplot(1:5, col=cm.colors(5))<\/code><\/pre>\n<\/div>\n<div id=\"conclusion\" class=\"section level2\">\n<h2>Conclusion<\/h2>\n<p>We present the top R color palette to customize graphics generated by either the ggplot2 package or by the R base functions. The main points are summarized as follow.<\/p>\n<ul>\n<li>Create a basic ggplot. Map the <code>color<\/code> argument to a factor or grouping variable.<\/li>\n<\/ul>\n<pre class=\"r\"><code>p &lt;- ggplot(iris, aes(Sepal.Length, Sepal.Width))+\r\n  geom_point(aes(color = Species))\r\np<\/code><\/pre>\n<ul>\n<li>Set the color palette manually using a custom color scale:<\/li>\n<\/ul>\n<pre class=\"r\"><code>p + scale_color_manual(values = c(\"#00AFBB\", \"#E7B800\", \"#FC4E07\"))<\/code><\/pre>\n<ul>\n<li>Use color blind-friendly palette:<\/li>\n<\/ul>\n<pre class=\"r\"><code>cbp1 &lt;- c(\"#999999\", \"#E69F00\", \"#56B4E9\", \"#009E73\",\r\n          \"#F0E442\", \"#0072B2\", \"#D55E00\", \"#CC79A7\")\r\np + scale_color_manual(values = cbp1)<\/code><\/pre>\n<ul>\n<li>Use RColorBrewer palettes:<\/li>\n<\/ul>\n<pre class=\"r\"><code>p + scale_color_brewer(palette = \"Dark2\")<\/code><\/pre>\n<ul>\n<li>Use viridis color scales:<\/li>\n<\/ul>\n<pre class=\"r\"><code>library(viridis)\r\np + scale_color_viridis(discrete = TRUE)<\/code><\/pre>\n<\/div>\n<\/div>\n<p><!--end rdoc--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article presents the top R color palettes for changing the default color of a graph generated using either the ggplot2 package or the R base plot functions. You\u2019ll learn [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7849,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rating_form_position":"","rating_results_position":"","mr_structured_data_type":"","footnotes":""},"categories":[124],"tags":[315,125],"class_list":["post-8184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ggplot2","tag-ggplot2-graphical-parameters","tag-r-colors"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Top R Color Palettes to Know for Great Data Visualization - Datanovia<\/title>\n<meta name=\"description\" content=\"You will learn the top R color palettes for changing the default color of a graph generated using either the ggplot2 package or the R base plot functions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Top R Color Palettes to Know for Great Data Visualization - Datanovia\" \/>\n<meta property=\"og:description\" content=\"You will learn the top R color palettes for changing the default color of a graph generated using either the ggplot2 package or the R base plot functions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/\" \/>\n<meta property=\"og:site_name\" content=\"Datanovia\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-13T07:28:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-25T09:18:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alboukadel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alboukadel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/\"},\"author\":{\"name\":\"Alboukadel\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e\"},\"headline\":\"Top R Color Palettes to Know for Great Data Visualization\",\"datePublished\":\"2018-11-13T07:28:49+00:00\",\"dateModified\":\"2019-12-25T09:18:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/\"},\"wordCount\":1068,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg\",\"keywords\":[\"GGPLOT2 Graphical Parameters\",\"R Colors\"],\"articleSection\":[\"ggplot2\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/\",\"name\":\"Top R Color Palettes to Know for Great Data Visualization - Datanovia\",\"isPartOf\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg\",\"datePublished\":\"2018-11-13T07:28:49+00:00\",\"dateModified\":\"2019-12-25T09:18:31+00:00\",\"description\":\"You will learn the top R color palettes for changing the default color of a graph generated using either the ggplot2 package or the R base plot functions.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg\",\"width\":1024,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.datanovia.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Top R Color Palettes to Know for Great Data Visualization\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"name\":\"Datanovia\",\"description\":\"Data Mining and Statistics for Decision Support\",\"publisher\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.datanovia.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\",\"name\":\"Datanovia\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"width\":98,\"height\":99,\"caption\":\"Datanovia\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e\",\"name\":\"Alboukadel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g\",\"caption\":\"Alboukadel\"},\"url\":\"https:\/\/www.datanovia.com\/en\/blog\/author\/kassambara\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Top R Color Palettes to Know for Great Data Visualization - Datanovia","description":"You will learn the top R color palettes for changing the default color of a graph generated using either the ggplot2 package or the R base plot functions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/","og_locale":"en_US","og_type":"article","og_title":"Top R Color Palettes to Know for Great Data Visualization - Datanovia","og_description":"You will learn the top R color palettes for changing the default color of a graph generated using either the ggplot2 package or the R base plot functions.","og_url":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/","og_site_name":"Datanovia","article_published_time":"2018-11-13T07:28:49+00:00","article_modified_time":"2019-12-25T09:18:31+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg","type":"image\/jpeg"}],"author":"Alboukadel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alboukadel","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#article","isPartOf":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/"},"author":{"name":"Alboukadel","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e"},"headline":"Top R Color Palettes to Know for Great Data Visualization","datePublished":"2018-11-13T07:28:49+00:00","dateModified":"2019-12-25T09:18:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/"},"wordCount":1068,"commentCount":4,"publisher":{"@id":"https:\/\/www.datanovia.com\/en\/#organization"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage"},"thumbnailUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg","keywords":["GGPLOT2 Graphical Parameters","R Colors"],"articleSection":["ggplot2"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/","url":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/","name":"Top R Color Palettes to Know for Great Data Visualization - Datanovia","isPartOf":{"@id":"https:\/\/www.datanovia.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage"},"thumbnailUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg","datePublished":"2018-11-13T07:28:49+00:00","dateModified":"2019-12-25T09:18:31+00:00","description":"You will learn the top R color palettes for changing the default color of a graph generated using either the ggplot2 package or the R base plot functions.","breadcrumb":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#primaryimage","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/Sur_le_sentier_montant_au_Pic_de_Greze.jpg","width":1024,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/www.datanovia.com\/en\/blog\/top-r-color-palettes-to-know-for-great-data-visualization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.datanovia.com\/en\/"},{"@type":"ListItem","position":2,"name":"Top R Color Palettes to Know for Great Data Visualization"}]},{"@type":"WebSite","@id":"https:\/\/www.datanovia.com\/en\/#website","url":"https:\/\/www.datanovia.com\/en\/","name":"Datanovia","description":"Data Mining and Statistics for Decision Support","publisher":{"@id":"https:\/\/www.datanovia.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.datanovia.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.datanovia.com\/en\/#organization","name":"Datanovia","url":"https:\/\/www.datanovia.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","width":98,"height":99,"caption":"Datanovia"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e","name":"Alboukadel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g","caption":"Alboukadel"},"url":"https:\/\/www.datanovia.com\/en\/blog\/author\/kassambara\/"}]}},"multi-rating":{"mr_rating_results":[{"adjusted_star_result":0,"star_result":0,"total_max_option_value":5,"adjusted_score_result":0,"score_result":0,"percentage_result":0,"adjusted_percentage_result":0,"count":0,"post_id":8184}]},"_links":{"self":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/8184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/comments?post=8184"}],"version-history":[{"count":1,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/8184\/revisions"}],"predecessor-version":[{"id":8185,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/8184\/revisions\/8185"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media\/7849"}],"wp:attachment":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media?parent=8184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/categories?post=8184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/tags?post=8184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}