2017-05-25 53 views
2

的樣本數據:ggplot:漸變填充的高點和低點

set.seed(123) 
dtf <- as.data.frame(rnorm(n = 1000, mean = 0, sd = 0.02)) 
dtf = as.data.frame(dtf) 
dtf = cbind(Obs = rownames(dtf), dtf) 
names(dtf)[2] = "random" 
head(dtf) 

    Obs  random 
1 1 -0.011209513 
2 2 -0.004603550 
3 3 0.031174166 
4 4 0.001410168 
5 5 0.002585755 
6 6 0.034301300 

簡單點的情節:

gp = ggplot() + 
    geom_point(data = dtf, aes(x = Obs, y = random)) 

gp 

我想darkreddarkgreen點和低點,以填補高點。以下不起作用:

gp = ggplot() + 
    geom_point(data = dtf, aes(x = Obs, y = random)) + 
    scale_colour_gradient(low = "darkgreen", mid = "blue", high = "darkred") 

gp 

有什麼建議嗎?

回答

3

您正在構造您的ggplot調用不正確。爲什麼你的通話不起作用是因爲你沒有將顏色(通過aes())映射到任何變量。嘗試

ggplot(dtf, aes(x = Obs, y = random, color = random)) + 
    geom_point() + 
    scale_colour_gradient2(low = "darkgreen", mid = "blue", high = "darkred") 
+0

我有一個巨大的融化數據框,我將使用'subset'來引用不同的變量。此外,我的情節包含3條線,點圖。這就是我使用這種結構的原因。無論如何,謝謝你:) – AK88

+0

@ AK88也許你可能想用'aes _()'。 –

3

您需要使用aes將顏色映射到變量並使用mid,則需要scale_color_gradient2

ggplot(dtf, aes(Obs, random)) + 
    geom_point(aes(color = random)) + 
    scale_color_gradient2(low = "darkgreen", mid = "blue", high = "darkred") 
+1

我屈服於羅馬誰是更早的13秒:) – neilfws

+2

時間是沒有重要性,只有生命。 –