2017-04-03 168 views
2
gb <- read.csv('results-gradient-boosting.csv') 
p <- ggplot(gb) + geom_point(aes(x = pred, y = y),alpha = 0.4, fill = 'darkgrey', size = 2) + 
geom_line(aes(x = pred, y = pred,color = 'darkgrey'),size = 0.6) + 
geom_line(aes(x = pred, y = pred + 3,color = I("darkgrey")), linetype = 'dashed',size = 0.6) + 
geom_line(aes(x = pred, y = pred -3,color = 'darkgrey'),linetype = 'dashed',size = 0.6) 

我的代碼在上面。我不知道爲什麼當我把顏色放在aes裏時,顏色變成了紅色。但如果我把它放在aes之外,這是正確的。謝謝你的幫助! enter image description hereggplot沒有繪製正確的顏色

回答

6

當您將color="darkgrey"放在aes之外時,ggplot會將其字面意思表示該行應爲彩色"darkgrey"。但是當你把color="darkgrey"放在aes的內部時,ggplot就意味着你想把顏色映射到一個變量上。在這種情況下,變量只有一個值:「darkgrey」。但這不是顏色"darkgrey"。這只是一個字符串。你可以稱它爲任何東西。顏色ggplot選擇將基於默認調色板。當您想爲該變量的不同級別使用不同的顏色時,將顏色映射到變量。

例如,看下面的例子中會發生什麼。顏色是從ggplot的默認調色板中選擇的,並且在每次調用geom_line時完全獨立於我們用於colour的名稱。你會得到相同的三種顏色,當你有任何的色彩美學認爲,發生在三個不同的獨特的價值觀:

library(ggplot2) 
theme_set(theme_classic()) 

ggplot(mtcars) + 
    geom_line(aes(mpg, wt, colour="green")) + 
    geom_line(aes(mpg, wt - 1, colour="blue")) + 
    geom_line(aes(mpg, wt + 1, colour="star trek")) 

enter image description here

但現在我們把顏色外aes所以他們從字面上,我們發表評論在第三行,因爲如果我們不使用有效的顏色會導致錯誤。

ggplot(mtcars) + 
    geom_line(aes(mpg, wt), colour="green") + 
    geom_line(aes(mpg, wt - 1), colour="blue") #+ 
    #geom_line(aes(mpg, wt + 1), colour="star trek") 

enter image description here

注意,如果我們繪製顏色的mtcars(一個具有三個獨特的水平),我們得到了相同的三種顏色作爲第一個例子,但現在它們被映射的實際列該數據的實際特徵:

ggplot(mtcars) + 
    geom_line(aes(mpg, wt, colour=factor(cyl))) 

enter image description here

最後,如果我們想要什麼設置這些顏色映射到不同的值:

ggplot(mtcars) + 
    geom_line(aes(mpg, wt, colour=factor(cyl))) + 
    scale_colour_manual(values=c("purple", hcl(150,100,80), rgb(0.9,0.5,0.3))) 

enter image description here

+0

OMG感謝你這麼多你的迴應!很有幫助! – Alice