I would like to use a custom defined palette in drawing a graph with ggplot2. I take just an example made with viridis:
library(ggplot2)
library(viridis)
ggplot(data.frame(x = rnorm(10000), y = rnorm(10000)), aes(x = x, y = y)) +
geom_hex() + coord_fixed() +
scale_fill_viridis() + theme_bw()
My idea is to use the following palette:
palette <- c("#771C19", "#AA3929", "#E25033", "#F27314", "#F8A31B",
"#E2C59F", "#B6C5CC", "#8E9CA3", "#556670", "#000000")
library(scales)
show_col(palette)
I supposed to use scale_colour_manual(values = palette)
but it looks like it doesn't take my custom-defined one. I am doing some kind of mistake?
library(ggplot2)
ggplot(data.frame(x = rnorm(10000), y = rnorm(10000)), aes(x = x, y = y)) +
geom_hex() + coord_fixed() +
scale_colour_manual(values = palette) + theme_bw()
The issue is that you are using
scale_color_manual
which will only work for discrete variables mapped on thecolor
aes. As you have a continuous variable which is mapped on thefill
aes one option would be to usescale_fill_gradientn
: