ggplot:手动为某些因子级别着色而不是其他级别

时间:2018-06-15 11:10:08

标签: r ggplot2 visualization

在R中,我试图使用ggplot的geom_point绘制一些数据。

让我们模拟一些数据:

df <- data.frame(x = rnorm(20),
                 y = rnorm(20),
                 z = LETTERS[sample(3, 20, replace = T)])

基本上,数据是与因子标签(“A”,“B”或“C”)相关的一些坐标。

我想使用ggplot的geom_point在散点图上绘制它们,我想手动设置“C”点标记的颜色。我不关心ggplot为“A”和“B”点设置标记的颜色。

以下是我的想法:

library(dplyr)
library(ggplot2)

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")

......看起来像这样:

enter image description here

这正是我想要的,除了“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"))

enter image description here

...将“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))

enter image description here

将“C”标记放入图例中,标记正确,顺序正确,但我无法设置其颜色。

重申:如何手动设置“C”的颜色,让“A”和“B”由ggplot自动着色,并在图例中显示“A”,“B”和“C”?

1 个答案:

答案 0 :(得分:0)

Yo可以使用scale_color_manual

来设置所有颜色
ggplot(df, aes(x = x, y = y, color = z)) + geom_point()+ 
      scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))

据我所知,你只能设置全部或全部自动。从来没有试过修理过。