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