2013-05-17 48 views
2

能否請你幫我解決這個問題:通過一個函數繪製多個人?

我有一個數據庫,如下圖所示:

Animal Milk Age 
1 11.96703591 1 
1 13.41236333 2 
1 14.85769075 3 
1 16.30301817 4 
2 17.74834559 1 
2 19.08465881 2 
2 20.42097204 3 
2 14.66094662 4 
2 14.70197368 5 
3 14.74300075 1 
3 14.78402781 2 
3 14.82505488 3 
3 14.86608194 4 
3 14.90710901 5 

我想使牛奶與年齡之間的情節,所以我用函數圖(牛奶〜年齡,data = mydata) 我的問題是,我怎樣才能通過使用一個函數爲每個人做出同樣的情節(牛奶〜年齡)。因爲我有大約200只動物,如果我必須跑200次才能製作200條曲線。

感謝 PHUONG

回答

2

一種方法是使用庫ggplot2,然後進行個人層面每個動物。由於您有許多動物,您可以在facet_wrap()中更換ncol=nrow=以獲得更好的視野。

library(ggplot2) 
ggplot(df,aes(x=Age,y=Milk))+geom_point()+facet_wrap(~Animal) 

enter image description here

+0

嗨didzis,有沒有辦法將每個單獨的方面寫入一個單獨的pdf文件?請參閱我的回答下方的OP錯誤評論 –

1

你有獨特的Animal值下面的代碼應該創造儘可能多的陰謀,並在不同的PDF文件存儲在工作目錄:

invisible(by(df, df$Animal, function(tmpdf) { 
    pdf(paste0("plot",tmpdf$Animal[1],".pdf")) 
    plot(Milk~Age, data=tmpdf, main=tmpdf$Animal[1]) 
    dev.off() 
})) 
+0

我還沒有嘗試第二個建議,但我認爲它符合我的想法。當我回家時,我會嘗試它,然後看看它是否有效。非常感謝! –

0

我要說使用ggplot2軟件包中的ggplot

ggplot(df,aes(x=Age,y=Milk, color=Animal))+geom_point() 

編輯1:實際上,這將失去200個動物的清晰度。您是否想要將所有這些數據點都放在一個圖表中,還是分佈在200個圖表上?如果後者然後我同意Didzis

+0

嗨Didzis,我試過你的方法,它符合我的想法。謝謝。但是,我仍然有問題,如何將每個動物的情節分隔到每個pdf文件/頁面或圖像。由於我有200多個動物,所以如果我們放在同一個pdf頁面中,它就這麼小。 –

+0

我想你打算在不同的答案下發布它。但從我的角度來看,如果你想爲每個動物生成一個新的pdf,你可能必須編寫一個循環 –

+0

@ hn.phuong如果你需要每個動物的單獨pdf,那麼你不需要使用facet_wrap(),而只需要需要用ggplot()來修改juba的答案或者使用循環。 –