R ggplot:手动为某些因子级别上色,但不为其他因子级别上色

R ggplot:手动为某些因子级别上色,但不为其他因子级别上色,r,ggplot2,visualization,R,Ggplot2,Visualization,在R中,我尝试使用ggplot的geom_点绘制一些数据 让我们模拟一些数据: df <- data.frame(x = rnorm(20), y = rnorm(20), z = LETTERS[sample(3, 20, replace = T)]) …看起来是这样的: 这正是我想要的,只是“C”点的标记没有出现在图例中 让我们再试一次,略有不同: df %>% filter(z != "C") %>

在R中,我尝试使用ggplot的
geom_点
绘制一些数据

让我们模拟一些数据:

df <- data.frame(x = rnorm(20),
                 y = rnorm(20),
                 z = LETTERS[sample(3, 20, replace = T)])
…看起来是这样的:

这正是我想要的,只是“C”点的标记没有出现在图例中

让我们再试一次,略有不同:

df %>%
  filter(z != "C") %>% 
  ggplot(aes(x, y)) +
  geom_point(aes(colour = factor(z))) +
  geom_point(data = filter(df, z == "C"),
             aes(x, y, colour = "#C0C0C0"))

…这使“C”标记进入图例,但它的标签错误,颜色不正确

另一种尝试:

df %>%
  filter(z != "C") %>% 
  ggplot(aes(x, y)) +
  geom_point(aes(colour = factor(z))) +
  geom_point(data = filter(df, z == "C"),
             aes(x, y, colour = z))

这将“C”标记放入图例中,正确地标记,并按正确的顺序排列,但我无法设置其颜色


因此,重申一下:我如何手动设置“C”的颜色,让“A”和“B”通过ggplot自动着色,并在图例中显示“A”、“B”和“C”?

您可以使用
scale\u color\u manual
设置所有颜色:

ggplot(df, aes(x = x, y = y, color = z)) + geom_point()+ 
      scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
正如我所知,你只能设置所有或让所有自动。从未试图解决过一些问题。

是一个类似的问题,有答案。显示了一个类似的答案,可能更符合您正在做的事情。
ggplot(df, aes(x = x, y = y, color = z)) + geom_point()+ 
      scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))