2016-12-15 85 views
0

我想改變R圖(同一系列數據)中的LINE的顏色。例如,如果你有一年的星期顯示溫度點,並且它們與geom_line()或同等數據有關,那麼我將如何顯示在更高的溫度周內線條變得更深,而在較冷的周內逐漸變爲黃色? (如果兩個點和線可以在相同的調色板/梯度上基於相同的變量 - 例如溫度而變化,那將是理想的)。如何改變R圖(ggplot或類似的)中的變量的LINE顏色

bp.df <- NULL 
bp.weeks <- 26 
bp.days <- 7 * bp.weeks 
bp.df$day <- 1:bp.days 
bp.df$week <- ceiling(bp.df$day/7) 
bp.mean.normal <- 100 
bp.sd.normal <- 20 

bp.df <- as.data.frame(bp.df) 

bp.df$normal <- rnorm(nrow(bp.df),bp.mean.normal, bp.sd.normal) 
bp.df$day <- as.numeric(bp.df$day) 

# make sure ggplot2 is installed and loaded 

g <- ggplot(bp.df, aes(x = day, y = normal, color = normal)) + 
    geom_point() + 
    geom_line(col = bp.df$normal) 
g 

爲什麼線條顏色與「正常」變量的水平不匹配?我明白,由於它們連接兩個點,因此線條必須「決定」使用哪一個值,但是此輸出似乎使顏色完全隨機。

如果跨漸變變化將不起作用,我將如何使該行在前50天爲紅色,在下一個50爲綠色等?

+1

它_does_匹配;它使用'normal'的值作爲段的最左邊的點,因爲那是你通過'aes'傳遞的向量。爲了使顏色每50天變化一次,添加一個變量以作爲顏色美學傳遞。 'ggplot(bp.df,aes(x = day,y = normal,color = cut(day,seq(0,200,50))))+ geom_point()+ geom_line()' – alistaire

+0

謝謝,接下來的評論明確澄清了我的困惑。顯然,單獨的變量對於驅動顏色是有意義的。 –

回答

0

試試這個:

g <- ggplot(bp.df, aes(x=day, y = normal, color = normal)) + geom_point() + 
geom_line(aes(color=normal)) 

g 

看來山坳說法是比AES參數的顏色不同。

+0

每[此帖](http://stackoverflow.com/questions/32543340/behavior-ggplot2-aes-in-combination-with-facet-grid-when-passing-variable-wi),在' aes'會導致意想不到的結果。您可以將此代碼修改爲'g < - ggplot(bp.df,aes(x = day,y = normal,color = normal))+ geom_point()+ geom_line()'並獲得相同的結果。由於'ggplot'中的原始'aes'參數中已經有'color = normal',所以不需要再次調用它。 –

+0

謝謝,我沒有意識到這一點。這聽起來像一個希望將被修復的錯誤。 – thc

+0

謝謝你們,非常有幫助。 –