R语言 我不能使数字10、15、20和25显示在我的图上,我的循环有什么问题?

vuktfyat  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(165)

代码:

plot.new()
plot.window(xlim = c(0, 5), ylim = c(0, 5), asp = 1)
for (r in 0:5){
  segments(x0 = 0, y0 = r, x1 = 5, y1 = r)
}
for (c in 0:5){
  segments(x0 = c, y0 = 0, x1 = c, y1 = 5)
}
for (i in 1:25){
  if (i%%5 == 0){
    text(i - 0.5, (i%/%5-1) + 0.5, labels = as.character(i))
  }else{
    text(i%%5 - 0.5, i%/%5 + 0.5, labels = as.character(i))
  }
}

if语句应该能够帮助我将数字放在正确的列中,但实际上并不起作用

5vf7fwbs

5vf7fwbs1#

问题是,当你点击5的倍数时,你把x坐标设置为i - 0.5,但是你总是希望x坐标为4.5。

modulo <- 5
for (i in 1:25){
  if (i %% modulo == 0){
    text(modulo - 0.5, (i%/%5 - 1) + 0.5, labels = as.character(i))
    # or just text(4.5 ...)
  } else {
    text(i%%5 - 0.5, i%/%5 + 0.5, labels = as.character(i))
  }
}

mpbci0fu

mpbci0fu2#

以下是一种不同的方法,没有任何循环或分割:

mat <- matrix(1:25, 5, byrow=TRUE)
plot(NA, xlim=c(0, 5), ylim=c(0, 5), axes=FALSE, xlab="", ylab="")
segments(rep(0, 5), 0:5, rep(5, 5), 0:5)
segments(0:5, rep(0, 5), 0:5, rep(5, 5))
text(row(mat)-.5, col(mat)-.5 , t(mat))

相关问题