在R的图形中为每个级别的因子分配颜色

6

我有一个数据集,其中有一列是一个因子变量,有4个级别:1234。我使用以下代码为每个级别分配了不同的颜色:

colorset = c('red', 'blue', 'green', 'black')
ggplot(...) + geom_density() + scale_fill_manual(values=colorset)

如果数据集包含所有4个级别,则代码可以正常工作。但有时数据集会缺少一个级别,例如缺少2。那么红色仍然为级别1,但现在蓝色被分配给级别3,绿色被分配给级别4,而黑色则从未使用过。
如何更改代码以确保无论使用哪个数据集,颜色分配都保持不变(例如蓝色始终为级别2,绿色始终为级别3等)?

这个答案有什么问题吗? - Mike Wise
不,这很完美!非常感谢你,Mike。 - user3768495
1个回答

6
这是做法:
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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接