ggplot geom_point更改颜色

时间:2019-03-22 14:15:49

标签: r ggplot2

我正在运行代码,它可以正常工作

ggplot(data_df, aes(x= RR, y= PPW, col = year)) + 
  geom_point(size = 3, alpha=0.6)

现在,我尝试将(x,y)的平均值放在图形上,通过添加使其具有另一种颜色

ggplot(data_df, aes(x= RR, y= PPW, col = year))) + 
  geom_point(size = 3, alpha=0.6) + 
  geom_point(data=data_df, aes(x=mean(RR), y=mean(PPW)) + 
  geom_point(color="red")

可以,但是所有点的颜色现在都是红色

如果我将颜色放在这样的aes中,则平均点会得到另一种颜色,我也可以在图例中看到它

ggplot(data_df, aes(x= RR, y= PPW, col = year))) + 
  geom_point(size = 3, alpha=0.6) + 
  geom_point(data=data_df, aes(x=mean(RR), y=mean(PPW), color="red"))

我想手动给颜色。有可能吗?

1 个答案:

答案 0 :(得分:1)

您缺少有关ggplot如何管理美学的两个关键点:

  1. 每个geom_*层都将从父aes调用继承ggplot设置,除非您手动覆盖它。因此,在您的第一个示例中,第三个geom_point继承了x的{​​{1}}和y值,而不是其上方的“ mean”层,因此在每个彩色点的顶部。

  2. ggplot中的值将应用于刻度,而不按原样使用。因此,在第二个示例中,将aes放在color = 'red'中时,并不是将点设为红色,而是说颜色应由类别变量确定(这里的长度为1向量,由基于aes的单词“ red”组成。您可以添加scale_color_*并设置scale_color_manual,以便该值呈现所需的颜色,也可以将'red' = 'red'移到color=之外,以便按原样进行解释(并且会将该图层中的所有点都设为红色)。


牢记这些要点,做您想做的事情就像将aes移到color之外一样简单:

aes