我是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")
答案 0 :(得分:1)
目前还不清楚你是否想要在一个页面上绘制多个图,如Molx&#39;解决方案提供,或者您是否要在单个图中叠加数据。
如果是后者,你有几个选择。尝试绘制一个数据集,然后par(new=TRUE)
,然后下一个plot
命令将写入同一图表。注意重复的轴和缩放问题。
或者您可以绘制第一个集合,然后显式调用lines(cont[,1],cont[,2],...)
绘制更多数据集。
答案 1 :(得分:0)
您可以叠加设置mfrow
或mfcol
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()
的数据创建一个带有轴限制的图。您可以使用xlim
和ylim
手动更改设置限制:
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))