我正在尝试绘制传染病蔓延的模拟模型。
我的数据有三列,x,y和感染时间。我需要在每个时间(t)绘制每个点(x坐标,y坐标),其中t在1到4之间运行。所以我正在寻找四个图形,每次一个,第一个图形绘制第一个被感染的图形点,第二个绘制时间1和2的感染点等等。
我知道我可以使用par(mfrow = c(2,2))获得多个图形,但我不确定如何将每次合并到代码中。有什么建议吗?
答案 0 :(得分: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]) )
或其他类似方法,具体取决于数据的结构。
答案 1 :(得分:1)
我会使用包ggplot2。安装软件包后,使用install.packages("ggplot2")
然后library(ggplot2)
安装它,尝试代码:
p <- ggplot(data, aes(x=x,y=y)) + geom_point() + facet_wrap(~t)
我很确定你可以在没有在这个网站上提问的情况下找到这个!在提出这些问题之前,请小心做更多的研究。
答案 2 :(得分:1)
根据您的原始数据集,大约有一千种方法可以执行此操作。从长远来看,Learning 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])
}
答案 3 :(得分:0)
你可以在这里找到一个很好的概述:
http://www.statmethods.net/graphs/scatterplot.html