2014-07-09 256 views
1

我有用於兩性和從三個不同的羣體這樣正在添加的數個個體的體溫度(Tb),襯底溫度(Ts)數據的數據幀: (I因爲我提出了此表更不知道如何分享我的全表,但我必須從每個彈出約30人)如何在R中的相同散點圖上繪製多條迴歸線?

pop sex tb ts 
bo m  37 30 
bo m  39 29 
bo f  36 36 
pa m  40 34 
pa f  37 28 
pa m  37 33 
pa f  36 26 
re f  35 24 
re f  37 29 
re m  38 30 

我要評估Tb和TS,但之間的關係不僅對物種,但每個人羣分別以找出它們之間可能存在的差異。

my.regression <- lm(tb ~ ts*pop*sex, data = mydata) 

我設法繪製了不同顏色的散點圖,每個我的人口。但是,我無法繪製我的迴歸線。我到處搜索了答案:關於如何按組添加回歸線...(不是在計算器中,甚至沒有全能Google,YouTube教程,R圖書,R圖形書籍等的幫助)

全部我想要繪製每個人口的一條迴歸線。同樣的事情也給this plot

+1

第一個建議:繼續閱讀[**教程**](http://www.cookbook-r.com/Graphs/)在你之前的情節問題中有人提出並通過例子工作。它會讓你在「ggplot」路徑上走得更平滑。有關當前的問題,請參閱[**這裏**](http://www.cookbook-r.com/Graphs/Scatterplots_%28ggplot2%29/#set-colorshape-by-another-variable)。也許是按性別分類? – Henrik

+0

@Henrik:感謝按性別分面的想法,我將其添加到我的答案 –

+0

感謝您的版本(我在哪裏可以學習如何正確粘貼表格??)。很高興我進入這個網站後繼續學習。我一直在閱讀ggplot材料,但我仍然面臨編碼問題。 – Maria

回答

2

這是很容易使用ggplot2geom_smooth層做:

library(ggplot2) 
ggplot(mydata, aes(x=tb, y=ts, col=pop)) + geom_point() + 
      geom_smooth(method="lm", se=FALSE) 

如果您想通過性以及分離,然後通過@Henrik的建議,你可能想嘗試把他們在單獨的子圖(稱爲小面):

ggplot(mydata, aes(tb, ts, col=pop)) + geom_point() + 
      geom_smooth(method="lm", se=FALSE) + facet_wrap(~ sex) 

或者,也可以通過兩者的積,但使用線型(實線或虛線)來區分性:

ggplot(mydata, aes(tb, ts, col=pop, lty=sex)) + geom_point() + 
      geom_smooth(method="lm", se=FALSE) 
+0

冷杉選項對我非常有幫助。然而,這種情節有些奇怪。它表明它不會繪製所有的值。我意識到,當我指定「shape = pop」時,我看到對於其中一個人羣,當我知道我對該人羣至少有30次測量時,它只繪製了三個點。我做錯什麼了嗎? – Maria

+0

請問您可以發佈'dput(mydata)'的結果,以便我可以重現它嗎? –

+0

我發現了。結果有幾個點重疊,這就是爲什麼它看起來比實際要少。 你知道有什麼方法可以將它們稍微向右移動,使它們全都出現在劇情中? 我知道如何使用函數「plot」時做到這一點,但我對ggplot2非常陌生。謝謝! – Maria