如何在 ggplot2 中使用自己的调色板?

How to use its own palette with ggplot2?

我已经定义了一个调色板 colorRampPalette 用于每个绘图。如何使用 ggplot2 默认设置此调色板?

我不知道该怎么做,也找不到答案。

MWE:

df <- data.frame(x = letters[1:3], y = runif(3), fill = LETTERS[1:3])
mypalette <- colorRampPalette(colors = c("white", "blue"))

现在如何使用调色板本身而不是 hack:

ggplot(df, aes(x=x,y=y)) + geom_col(aes(fill = fill)) +
    scale_fill_manual(values = mypalette(3))

更一般地说,是否有类似 theme(palette = mypalette) 的东西,所以默认情况下必须始终拥有自己的调色板?

我发现以下策略有时很有用:

scale_fill_discrete <- function(...) 
  scale_fill_manual(..., values=palette())

ggplot(df, aes(x=x,y=y)) + geom_col(aes(fill = fill))

palette(c("#738290", "#A1B5D8",  "#C2D8B9"))

ggplot(df, aes(x=x,y=y)) + geom_col(aes(fill = fill))