2016-08-24 295 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

我會建議添加你的情節 –