2013-10-07 115 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])) 

或者其他取决于数据结构的类似方法。