为R数字中的每个级别的因子分配颜色

时间:2016-01-08 21:42:08

标签: r colors ggplot2

我有一个数据集,其中一列是一个因子变量,有4个级别:L1,L2,L3 = [[8,11,12,13], [1,5,9], [4,8,10]] listush2 = [[r[0],r[1],r[2]] for r in L1,L2,L3 if r[0]>r[1] and r[0]>r[2] and r[1]>2*r[2]] >>> listush2 [] 12。我使用这些代码为每个级别分配不同的颜色:

3

如果数据集包含所有4个级别,则代码可以正常工作。但有时数据集缺少一个级别,例如缺少4。然后红色仍然是等级colorset = c('red', 'blue', 'green', 'black') ggplot(...) + geom_density() + scale_fill_manual(values=colorset) ,但现在蓝色被分配到等级2,绿色等级为1,而黑色则从未使用。

如何更改代码以确保无论我使用何种数据集,颜色分配保持不变(如蓝色始终为级别3,绿色始终为级别4等。)?

1 个答案:

答案 0 :(得分:4)

您就是这样做的:

n <- 1000
A <- data.frame(id='A',x=rnorm(n, 5, 2))
B <- data.frame(id='B',x=rexp(n, 1/4))
C <- data.frame(id='C',x=rexp(n, 1/8))
D <- data.frame(id='D',x=rexp(n, 1/16))
df <- rbind(A,B,C,D)

colorset = c('B'='red','A'='green','D'='black','C'='blue'  )

ggplot(df, aes(x)) +
  geom_density(aes(fill = id), alpha = .4, adjust = 2) +
  scale_fill_manual(values=colorset) +
  scale_x_continuous( limits =c(0,40))

enter image description here