我有一列其与4个级别的因子变量的数据集:1
,2
,3
,和4
。我使用此代码为每个级别分配不同的颜色:
colorset = c('red', 'blue', 'green', 'black')
ggplot(...) + geom_density() + scale_fill_manual(values=colorset)
Run Code Online (Sandbox Code Playgroud)
如果数据集包含所有 4 个级别,则代码工作正常。但有时数据集缺少一个级别,例如, missing 2
。然后红色仍然用于 level 1
,但现在蓝色被分配给 level 3
,绿色用于 level 4
,而黑色从未使用过。
我如何更改代码以确保无论我使用什么数据集,颜色分配都保持不变(例如蓝色始终代表级别2
,绿色始终代表级别3
等)?
这是你如何做到的:
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))
Run Code Online (Sandbox Code Playgroud)