我喜欢默认的 ggplot2 颜色,但是对于我正在使用的数据集,读者能够区分两个相邻类别之间的差异非常重要。这对于默认颜色来说很困难,因为我有 10 个类别,因此生成的颜色在相邻因子组之间非常相似。
这是一个例子:
library(ggplot2)
x=rnorm(100,1,2)
y=rnorm(100,1,2)
category=letters[1:10]
data=cbind.data.frame(x,y,category)
ggplot(data,aes(x,y,colour=category))+stat_smooth(alpha=0)
给出这样的东西:
例如,在这个图表上很难找出哪个是 d
哪个是 e
,因为它们都是绿色的,重要的是区分我的数据的相邻因子组。现有的顺序也很重要,我希望它在图例中按顺序显示。
所以我的问题是;有没有办法保留可爱的默认 ggplot2 颜色(跨 10 个因子级别),但稍微混合顺序,以便相邻类别看起来更容易区分?在我的数据集中,不相邻的类别通常可以通过其实际分布来确定,因此颜色对于这些类别来说不太重要。
我尝试过使用不同的 scale_colour_brewer()
调色板,但颜色并不那么漂亮。
最佳答案
要打乱颜色的顺序,您可以使用
require(scales)
n <- length(levels(data$category)) # number of colors
cols <- hue_pal(h = c(0, 360) + 15,
c = 100, l = 65,
h.start = 0, direction = 1)(n)[order(sample(1:n, n))] # color palette in random order
ggplot(data,aes(x,y,colour=category))+stat_smooth(alpha=0, size=2) +
scale_color_manual(values = cols)
如果您想要可区分的颜色,请查看 this post 。
关于r - ggplot 颜色 : changing order of colours, 的最佳可视化保持原始因子排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548353/