此答案基于 Alec 的答案,但创建了一个函数,该函数返回scale_fill_discrete
的类型参数等于scale_fill_colorblind
. 您不必指定数据中的组数;如果有 N 个组,scale_fill_discrete
将在其type
参数中使用前 N 个颜色。我写的函数还可以让你选择你想要的颜色,所以你可以去掉黑色或使用第 2、第 4 和第 5 种颜色。
加载包
library(ggplot2)
# Included because this is what I used to make the images:
theme_set(theme_minimal())
library(ggthemes)
定义颜色/填充函数
# Fill
scale_fill_colorblind7 = function(.ColorList = 2L:8L, ...){
scale_fill_discrete(..., type = colorblind_pal()(8)[.ColorList])
}
# Color
scale_color_colorblind7 = function(.ColorList = 2L:8L, ...){
scale_color_discrete(..., type = colorblind_pal()(8)[.ColorList])
}
的默认值.ColorList
是2:8
因为色盲调色板中有8种颜色,第一种是黑色(我们要掉的那个)。
用法
像使用任何其他函数一样使用这些scale
函数:
ggplot(diamonds, aes(clarity, fill = cut)) +
geom_bar(position = "dodge") +
scale_fill_colorblind7()
您还可以指定中断作为...
参数的一部分。它们被传递给...
in scale_fill_discrete
。
ggplot(diamonds, aes(clarity, fill = cut)) +
geom_bar(position = "dodge") +
scale_fill_colorblind7(breaks = diamonds$cut)
不喜欢那些颜色?告诉函数使用哪些颜色(它们的位置):
ggplot(diamonds, aes(clarity, fill = cut)) +
geom_bar(position = "dodge") +
scale_fill_colorblind7(.ColorList = c(3,4,7,6,1))