在ggplot2中更改两个geom_point()的颜色

Jul*_*les 12 r ggplot2

样本数据集:

library(ggplot2)    
df = read.table(text = 
              "id      year    value1  value2 value3
            1           2000    1   2000      2001
            1           2001    2   NA        NA
            1           2002    2   2000      NA
            1           2003    2   NA         2003
            2           2000    1   2001     2003
            2           2002    2   NA       2000
            2           2003    3   2002     NA
            3           2002    2   2001     NA
        ", sep = "", header = TRUE)
df$value1 <- as.factor(df$value1)
Run Code Online (Sandbox Code Playgroud)

我知道如何改变三个级别的因子变量的颜色:

p <- ggplot(df, aes(y=id))
p <- p + scale_colour_manual(name="",  values =c("yellow", "orange", "red"))
p <- p + geom_point(aes(x=year, color=value1), size=4)
p
Run Code Online (Sandbox Code Playgroud)

我还可以更改两个数字变量的颜色:

p <- ggplot(df, aes(y=id))
p <- p + scale_colour_manual(name="",  values =c("value3"="grey", "value2"="black"))
p <- p + geom_point(aes(x=value3, colour ='value3'), size=3)
p <- p + geom_point(aes(x=value2, colour ='value2'), size=5)
p
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在同一个图表中更改两者的颜色?它是否也适用于scale_color_manual?

p <- last_plot() + geom_point(aes(x=year, color=value1))
p
Run Code Online (Sandbox Code Playgroud)

Bri*_*ggs 23

这是你想要的?

ggplot(df, aes(y=id)) +
  geom_point(aes(x=year, color=value1), size=4) +
  geom_point(aes(x=value3, colour ='value3'), size=3) +
  geom_point(aes(x=value2, colour ='value2'), size=5) +
  scale_colour_manual(name="",  
                      values = c("1"="yellow", "2"="orange", "3"="red",
                                 "value3"="grey", "value2"="black"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

基本上,只需将所有可能的颜色标签放在一个列表中.