1

我正在尝试绘制传染病传播的模拟模型。

我的数据有三列,x、y 和感染时间。我需要在每个时间(t)绘制每个点(x 坐标,y 坐标),其中 t 在 1 和 4 之间运行。所以我正在寻找四个图表,每次一个,其中第一个图表绘制第一个被感染的点,第二个绘制时间 1 和 2 的感染点,依此类推。

我知道我可以使用 par(mfrow=c(2,2)) 获得多个图表,但我不确定如何将每次合并到代码中。有什么建议么?

4

4 回答 4

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]) )

或其他类似方法,具体取决于您的数据结构。

于 2013-10-07T15:44:23.167 回答
1

有大约一千种方法可以做到这一点,具体取决于您的原始数据集。从长远来看,学习ggplot2可能是最好的。但是,使用基本图形,您可以为每个数据子集绘制图(也可以使用subset命令代替t<=Ti、自定义颜色等):

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

如果您试图传达时间的流逝,您可能希望在每个绘图上不可见地绘制整个数据范围,以设置相同的轴。然后使用pointsorlines将数据绘制到每个相同的帧中......

par(mfrow=c(4,1))
for (Ti in 1:4){  
  plot(x, y, type="n")
  points(x[t <= Ti], y[t <= Ti])
}
于 2013-10-07T15:43:01.663 回答
1

我会使用包 ggplot2。使用安装它install.packages("ggplot2"),然后library(ggplot2)在安装软件包后,尝试以下代码:

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

我敢肯定,您无需在此网站上提问就可以发现这一点!在问这些问题之前要小心做更多的研究。

于 2013-10-07T15:30:36.777 回答
0

你可以在这里找到一个很好的概述:http:
//www.statmethods.net/graphs/scatterplot.html

于 2013-11-14T09:43:16.160 回答