2013-10-07 117 views
1

我試圖繪製傳染病傳播的模擬模型。在R中繪製散點圖

我的數據有三列x,y和感染時間。我需要在每個時間點(t)繪製每個點(x座標,y座標),其中t在1和4之間運行。因此,我正在尋找四個圖形,每次一個圖形,第一個圖形繪製第一個感染點,第二個在時間1和2繪製受感染點等。

我知道我可以使用par(mfrow = c(2,2))獲得多個圖表,但我不確定如何合併每個時間進入代碼。有什麼建議麼?

+1

幫助我們提供您的數據的一些樣本,以幫助你,這使你的一個問題[/重現的問題(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –

回答

1

有大約一千種方法可以做到這一點,這取決於您的原始數據集。從長遠來看,Learning ggplot2可能是最好的。使用基本圖形,不過,你可以爲每個數據子集的劇情(也可以使用subset命令,而不是t<=Ti,自定義顏色等):

par(mfrow=c(2,2)) 
for (Ti in 1:4){ 
    plot(x[t <= Ti], y[t <= Ti]) 
} 

如果你想傳達的通道時間,您可能想要在每個圖上不可見地繪製整個數據範圍,以設置相同的座標軸。然後使用pointslines將數據繪製到各那些相同幀...

par(mfrow=c(4,1)) 
for (Ti in 1:4){ 
    plot(x, y, type="n") 
    points(x[t <= Ti], y[t <= Ti]) 
} 
1

我會使用軟件包ggplot2。使用install.packages("ggplot2")然後library(ggplot2)一旦軟件包安裝安裝它,嘗試代碼:

p <- ggplot(data, aes(x=x,y=y)) + geom_point() + facet_wrap(~t) 

我敢肯定,你可能已經發現了這一點,而不問一個問題,關於這個站點!在提出這些問題之前,請小心做更多的研究。

+2

我完全同意,但請記住@Carly詢問[crossvalidated](http://stats.stackexchange.com),可能不會當時已經考慮過這個網站。另外,當您不知道要查找的確切條款時,搜索功能通常可能無法檢索到正確的內容。你有一個點,但只是說'。 – Backlin

+0

我認爲這種方法只能在第二個方面繪製時間點2,在第三個方面只繪製時間點3等等(或者我錯過了什麼?)這個問題問到如何在第二個方面繪製時間1和2 /面板等 –

2

在這裏是使用鹼的圖形的一種方法:

par(mfrow=c(2,2)) 

for (i in 1:4) { 
    plot(y ~ x, data= mydf[ mydf$time <= i, ]) 
} 

lapply(1:4, function(tt) plot(x[time<=tt], y[time<=tt])) 

或者其他取決於數據結構的類似方法。