为 R 图中的每个因子水平分配颜色

use*_*495 5 r colors ggplot2

我有一列其与4个级别的因子变量的数据集:123,和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等)?

Mik*_*ise 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))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明