我正在绘制传染病传播的模拟模型。
我的数据有三列,x、y和感染时间。我需要在每一时间(t)绘制每个点(x坐标,y坐标),其中t在1到4之间运行。所以我在寻找四张图,每次一张,其中第一张图画出第一个感染点,第二张图在时间1和时间2处画出受感染点,等等。
我知道我可以使用par(mfrow=c(2,2))获得多个图,但我不知道如何将每次都合并到代码中。有什么建议吗?
发布于 2013-10-07 15:43:01
根据原始数据集的不同,有大约一千种方法可以做到这一点。从长远来看,ggplot2可能是最好的。但是,使用基本图形,您可以为每个数据子集绘制一个绘图(还可以使用subset命令代替t<=Ti、自定义颜色等等):
par(mfrow=c(2,2))
for (Ti in 1:4){
plot(x[t <= Ti], y[t <= Ti])
}如果您试图传递时间的推移,您可能想要绘制整个范围的数据在每个图形上看不见,以建立相同的轴。然后使用points或lines将数据绘制成每个相同的帧.
par(mfrow=c(4,1))
for (Ti in 1:4){
plot(x, y, type="n")
points(x[t <= Ti], y[t <= Ti])
}发布于 2013-10-07 15:44:23
下面是一种使用基本图形的方法:
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-07 15:30:36
我会使用包ggplot2。使用install.packages("ggplot2")安装它,然后在安装包后使用library(ggplot2),尝试以下代码:
p <- ggplot(data, aes(x=x,y=y)) + geom_point() + facet_wrap(~t)我敢肯定你本可以在这个网站上不问问题就发现这一点!在问这些问题之前,要小心做更多的研究。
https://stackoverflow.com/questions/19228659
复制相似问题