2017-05-11 58 views
2

經過多次谷歌搜索後,我決定尋求你的幫助,夥計們。ggplot平滑傳遞aes變量爲method.args

我只是在不同的時間點繪製一些觀察值,我想用stat_smooth添加一個線性迴歸。但是,我希望截距爲100的線性模型(因爲數據是相對於時間0的百分比)。要做到這一點,我發現最簡單的方法是在lm中使用offset參數。問題是如何獲得每個組(col和facet組)的'y'觀察值的數量以傳遞它來抵消參數。

如果我使用的數據相同數量(在我的案件10)每組的觀察,我可以只寫的數量和它的偉大工程:

myplot <- ggplot(mydt2, aes(x=Time_point, y=GFP_rel, col=Gene, fill=Gene,group=Gene)) 
myplot <- myplot + stat_smooth(method='lm', formula = y ~ x + 0, method.args=list(offset=rep(100,10))) + 
    facet_wrap(~Cell_line) 

enter image description here

然而,這是不是很優雅和/或靈活。我的問題是:如何將觀察次數傳遞給method.args?我嘗試偏移(100,..計數..),但我得到的錯誤:(列表)對象不能被強制鍵入'整數')。

有什麼建議嗎?

由於

+0

你可以張貼一些數據? –

+0

我會做,但我不知道如何。我無法編輯問題。 – Osdorp

+0

謝謝@aosmith。我已經嘗試過了,但它繪製的數據相對於零而不是100. – Osdorp

回答

0

可以使用I(y - 100)編碼式中所示here,而不是使用一個偏移量。

但是,stat_smooth的預測值將是y - 100的預測,而不是y。此行將通過0.您可以將行移回到位置,以使用position_nudge顯示原始y變量的預測。

所以stat_smooth代碼看起來像

stat_smooth(method = "lm", formula = I(y - 100) ~ x + 0, 
      position = position_nudge(y = 100)) 
+0

感謝@aosmith。 position_nudge解決了偏移量。 – Osdorp