2013-10-20 111 views
26

使用ggplot2的stat_smooth(),我很好奇如何調整生成的迴歸行的透明度。使用geom_points()或geom_line(),通常會爲「alpha」設置一個值,表示透明度百分比。但是,通過stat_smooth(),alpha設置置信區間的透明度(在我的示例中,關閉 - se = FALSE)。調整stat_smooth行的透明度(alpha),而不僅僅是置信區間的透明度

我似乎無法找到一種方法,使迴歸線(S)大於1

你的意見較低的透明度將是美好的。

示例代碼

library(reshape2) 
df <- data.frame(x = 1:300) 
df$y1 <- 0.5*(1/df$x + 0.1*(df$x-1)/df$x + rnorm(300,0,0.015)) 
df$y2 <- 0.5*(1/df$x + 0.3*(df$x-1)/df$x + rnorm(300,0,0.015)) 
df$y3 <- 0.5*(1/df$x + 0.6*(df$x-1)/df$x + rnorm(300,0,0.015)) 
df <- melt(df, id = 1) 

ggplot(df, aes(x=x, y=value, color=variable)) + 
    geom_point(size=2) + 
    stat_smooth(method = "lm", formula = y ~ 0 + I(1/x) + I((x-1)/x), 
       se = FALSE, 
       size = 1.5, 
       alpha = 0.5) 

enter image description here

回答

40

要只爲你應該更換stat_smooth()geom_line()和線路設置阿爾法值,那麼裏面的geom_line()使用相同的參數在stat_smooth()和另加stat="smooth"

ggplot(df, aes(x=x, y=value, color=variable)) + 
    geom_point(size=2) + 
    geom_line(stat="smooth",method = "lm", formula = y ~ 0 + I(1/x) + I((x-1)/x), 
       size = 1.5, 
       linetype ="dashed", 
       alpha = 0.5) 

enter image description here

+0

感謝,說會做 – EconomiCurtis

+0

只是一句話:用這種方法,置信區間已disapeared。我張貼了關於這一個問題:http://stackoverflow.com/q/29235114/3871924 – agenis

+0

@Didzis Elferts,你知道更好的解決這個問題的?任何ggplot擴展或改進? – Dan

3

因爲這是稍微更直觀的選擇 - 因爲這個答案也許創造的 - 你可以使用stat_smooth (geom="line")。在SE信封消失,但你可以用類似添加回去:

geom_smooth (alpha=0.3, size=0, span=0.5) stat_smooth (geom="line", alpha=0.3, size=3, span=0.5) +

的第一行創建了SE。沒有(0寬度)線,第二行將線添加到頂部。 (當前)文檔提到stat_smooth適用於非標準geoms(例如「行」)。

+1

設置** size = 0 **不再使線消失。或者,您可以使用參數** linetype = 0 **繪製沒有平滑線的標準錯誤。 –