2016-08-24 293 views
2

我是ggplot2的新手。我想了解如何使用ggplot。我正在阅读韦翰的书,并仍试图围绕如何使用aes()函数来包装我的头。在一个相关的线程中,我们讨论了我们应该尽量避免使用aes()中的变量,即“不要将常量放在aes()之内 - 只将映射放到实际的数据列中。”在ggplot2中使用aes()函数中的颜色

我的目标是观察ggplots在aes()中的颜色用于标记(如Wickham的书中所述)的行为并覆盖打印颜色的颜色。

我开始用这样的:

library(ggplot2) 
data(mpg) 
ggplot(mpg, aes(displ, hwy)) + 
    geom_point() + 
    geom_smooth(aes(colour = "loess"), method = "loess", se = FALSE) + 
    geom_smooth(aes(colour = "lm"), method = "lm", se = FALSE) + 
    labs(colour = "Method") 

这很好地绘制图表和标签它们。但是,我对使用的颜色感到不满。于是,我尝试了再次使用重载的颜色:

windows() 
ggplot(mpg, aes(displ, hwy)) + 
    geom_point() + 
    geom_smooth(aes(colour = "loess"), method = "loess", se = FALSE, color = "magenta") + 
    geom_smooth(aes(colour = "lm"), method = "lm", se = FALSE, color = "red") + 
    labs(colour ="Method") 

我添加颜色=“红”,我们可以看到,labs()aes(color())没有任何效果。为什么会发生?我很好奇。我会欣赏想法。

+0

我想这和下面的答案可能会工作错误的原因。不应该是'method =“黄土”'不'color = ...'cc:@ user1470500 – beroe

回答

4

指定时,aes()gg_plot外部的颜色不会将颜色信息视为数据的一部分(并且会覆盖以前的信息),因此不会再显示任何图例。

如果要指定自己的颜色,并保持颜色信息为“重要数据”,而不是“显示信息”,你应该添加一个scale_colour_manual()命令指定的传奇色彩和离开颜色属性在aes

ggplot(mpg, aes(displ, hwy)) + 
    geom_point() + 
    geom_smooth(aes(colour = "loess"), method = "loess", se = FALSE) + 
    geom_smooth(aes(colour = "lm"), method = "lm", se = FALSE) + 
    labs(colour ="Method") + scale_colour_manual(values = c("loess" = "magenta", "lm" = "red")) 

enter image description here

+0

我会建议添加你的情节 –