用R堆积地块

时间:2015-03-25 11:30:58

标签: r

我是R的新手,我试图将三个地块叠加在一起,以研究每个地块之间的多样性。作为R的新手我仍然没有找到解决方案。我已经尝试过ggplot和multiplot,但未能完成任务。也许我的文本文件中的标题是问题,或者我甚至没有清楚地看到问题!如果有人能就此提出建议,那将是非常有帮助的。

我的脚本如下:

defects <- read.table(file="C:/_____.txt",header=TRUE)
squareX <- c()        
squareY <- c()        

distance <- c(0, 17.0, 17.5, 34.5, 35.0, 52.0, 52.5, 69.5, 70.0, 87.0,
              87.5, 104.5, 105.0, 122.0, 122.5, 139.5)
square_beginning <- distance[seq(1,length(distance),2)] 

for ( i in 1:length(defects$x)){ 

  for (e in square_beginning){
    if (defects$x[i]>e & defects$x[i]<e+17.5) {
      squareX[i] <- e/17.5+1 
    }
    if (defects$y[i]>e & defects$y[i]<e+17.5) {
      squareY[i] <- e/17.5+1
    }
  }
}

defects<- cbind(defects,squareX,squareY)
#plot (defects)

cont <- read.table(file="C:/____.txt",header=TRUE)
squareX <- c()         
squareY <- c()         

distance <- c(0, 17.0, 17.5, 34.5, 35.0, 52.0, 52.5, 69.5, 70.0, 87.0,
              87.5, 104.5, 105.0, 122.0, 122.5, 139.5)
square_beginning <- distance[seq(1,length(distance),2)] 

for ( i in 1:length(cont$x)){ 

  for (e in square_beginning){  
    if (cont$x[i]>e & cont$x[i]<e+17.5) {
      squareX[i] <- e/17.5+1 
    }
    if (cont$y[i]>e & cont$y[i]<e+17.5) {
      squareY[i] <- e/17.5+1
    }
  }
}
par(mo=c(1,2))
plot(defects, main="test 1")
plot(cont, main="test 2")

2 个答案:

答案 0 :(得分:1)

目前还不清楚你是否想要在一个页面上绘制多个图,如Molx&#39;解决方案提供,或者您是否要在单个图中叠加数据。

如果是后者,你有几个选择。尝试绘制一个数据集,然后par(new=TRUE),然后下一个plot命令将写入同一图表。注意重复的轴和缩放问题。

或者您可以绘制第一个集合,然后显式调用lines(cont[,1],cont[,2],...)绘制更多数据集。

答案 1 :(得分:0)

您可以叠加设置mfrowmfcol par()参数的图表。对于3行和1列:

par(mfrow=c(3,1)) #mfrow will fill by rows

par(mfcol=c(3,1)) #mfcol will fill by columns

plot()声明之前执行此操作。无需使用ggplot2或任何其他库。

<强>更新

显然我误解了你的问题,如果你想在一个情节中添加三个数据集,你不应该使用par,并按照@Carl Witthoft的建议并使用plot()然后是lines()points()

以这种方式绘制将根据传递给plot()的数据创建一个带有轴限制的图。您可以使用xlimylim手动更改设置限制:

plot(1:10, (1:10)^2, xlim=c(0, 15), ylim=c(0, 150))
lines(1:15, seq(1, 150, length=15))
points(0:10, seq(1, 150, length=11))