根据facet_wrap改变抖动点的颜色

时间:2019-05-30 15:46:15

标签: r ggplot2 facet-wrap

我想比较两个不同地点的不同颜色的花朵(红色和绿色)的数量。我在ggplot2中有一个箱线图,背景中有一个抖动图。我希望抖动点的颜色根据花朵的颜色而有所不同。不知道该怎么做!有没有一种方法可以根据花朵的颜色对我的构面进行颜色编码?

一些示例数据:

site <- c(rep(1, 4), rep(2, 4))

colour <- c("red", "green", "red", "green", "red", "green", "red", "green")
number <- c(12, 24, 22, 14, 12, 16, 18, 17)

df <- data.frame(site, colour, number)
df$site <- as.factor(df$site)

ggplot(df, aes(site, number))+
  facet_wrap("colour")+
  geom_jitter(alpha = 0.3) +
  geom_boxplot(alpha = 0, colour = "black")+
  theme(legend.position = "none")

3 个答案:

答案 0 :(得分:1)

ggplot(df, aes(site, number))+
  facet_wrap(~colour)+
  geom_jitter(aes(col = colour), alpha = 0.3, show.legend = F) +
  geom_boxplot(alpha = 0, colour = "black")+
  scale_color_manual(values = c("green", "red"))

enter image description here

答案 1 :(得分:1)

虽然这里的两个答案都解决了您的问题,但我认为它们不必要地令人费解。

ggplot(df, aes(site, number)) +
  facet_wrap(~colour) +
  geom_jitter(alpha = 0.3, color = colour) +
  geom_boxplot(alpha = 0, color = "black")

reprex package(v0.3.0)于2019-05-30创建

  • 您不需要theme(legend.position = "none"),因为在geoms中,aes()中没有任何参数。

  • 在其中一个答案中,虽然我们将图例位置设置为none(因为colour位于aesthetics之内,所以需要图例位置),但我们也有{{1} }。

  • 您的show.legend = F列已经是colour,因此我们不需要使用c("red", "green")

答案 2 :(得分:0)

将颜色映射到您的列名。如果您希望按字面意义解释颜色,请使用同一标尺:

ggplot(df, aes(site, number))+
  facet_wrap(colour)+
  geom_jitter(aes(colour = colour), alpha = 0.3) +
  geom_boxplot(alpha = 0, colour = "black") +
  scale_color_identity() +
  theme(legend.position = "none")