我正在尝试用一种一致的方式来表示我的数据集中的每个因素。因此,例如,每当我绘制涉及词性的内容时,我可以将“词性”的级别用不同的蓝色阴影表示:
eg.dat <- data.frame(rt=c(530, 540, 555),
part.of.speech=c("Verb", "Noun", "Both")
)
ggplot(eg.dat, aes(part.of.speech, rt, fill=part.of.speech)) +
geom_bar(stat="identity", colour="black") +
scale_fill_manual(values=c("cyan", "blue", "darkblue"))
然而,为每个因素提供这样的花哨的颜色名称是困难的,所以我一直在寻找更多的自动解决方案。一个相当糟糕的解决方法是使用alpha
:
ggplot(eg.dat, aes(part.of.speech, rt, alpha=part.of.speech)) +
geom_bar(stat="identity", colour="black", fill="blue") +
scale_alpha_discrete(range=c(0.4, 1))
但我一直在想是否有更简单的方法可以选择这样的短程类似颜色。 scale_colour_gradient
中的ggplot2
类型函数不适用于这些离散因素,从rainbow
或heat.colors
中获取自定义颜色似乎并不容易。理想的功能是这样的:
shades(n, central_colour="blue")
,返回n
个颜色值。有关实现这一目标的最佳方法的任何建议吗?
答案 0 :(得分:9)
scale_fill_discrete
或scale_fill_hue
会执行此操作。您可以定义h
,c
和l
(色调,色度和亮度)。有关详细信息,请参阅?hcl
例如
ggplot(eg.dat, aes(part.of.speech, rt, fill=part.of.speech)) +
geom_bar(stat="identity", colour="black") +
scale_fill_discrete( h =c(220,260))
scale_fill_hue
会给出相同的结果(在这种情况下)。
您还可以使用使用scale_fill_brewer
包的RColorBrewer
并访问colorbrewer调色板
ggplot(eg.dat, aes(part.of.speech, rt, fill=part.of.speech)) +
geom_bar(stat="identity", colour="black") +
scale_fill_brewer(palette = 'Blues')