正如 cmets 中所指出的,您想要的调色板似乎不太可能完全自动化。但是,手动创建定制调色板并不难。
在下文中,我采用了一些 base R colour names 并使用内置函数 colorRampPalette 对它们进行了插值,并使用帮助器 f 进行了插值,只是为了方便。
通过这种方式,您可以创建任何您喜欢的调色板:
library(ggplot2)
data <- c(1:5, 30:40, 58, 200:210, 400)
f <- function(n, col1, col2 = NULL) colorRampPalette(c(col1, col2))(n)
colours <- c(
f(5, "white", "cyan"),
f(11, "blue", "purple"),
f(1, "violet"),
f(11, "pink", "red"),
f(1, "black")
)
ggplot(NULL, aes(x = factor(data), y = 1, fill = factor(data))) +
geom_tile() +
scale_fill_manual(values = colours) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Just to fit reprex
由reprex package (v0.3.0) 于 2020 年 5 月 22 日创建
显然,您必须使用实际的颜色值来获得看起来适合您的数据的东西。请注意,您不需要使用 R 定义的颜色名称。colorRampPalette(因此f)也采用十六进制颜色,例如,如果您特别喜欢其中一些颜色,您可以从ColorBrewer 获取.