在R中绘制散点图

时间:2013-10-07 15:24:00

标签: r data-visualization

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

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

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

4 个答案:

答案 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])
}

如果您想传达时间的推移,您可能希望在每个绘图上无形地绘制整个数据范围,以设置相同的轴。然后使用pointslines将数据绘制到每个相同的帧中......

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