R绘图中数字10、15、20、25无法显示,循环逻辑问题排查
问题分析与解决
问题原因
当i为5的倍数(10、15、20、25)时,你写的i - 0.5会得到9.5、14.5、19.5、24.5,这些x坐标远超出了plot.window设置的xlim = c(0,5)范围,导致数字被绘制在可视区域外,自然看不到。
修正代码
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){ # 计算列位置:5的倍数对应第5列,否则取余数 col_pos <- ifelse(i %% 5 == 0, 5, i %% 5) # 计算行位置:5的倍数时行数为i/5,否则为整数除法结果+1 row_pos <- ifelse(i %% 5 == 0, i / 5, i %/% 5 + 1) # 偏移0.5让数字居中显示在单元格内 text(col_pos - 0.5, row_pos - 0.5, labels = as.character(i)) }
代码说明
- 列位置:针对5的倍数直接指定第5列,避免了原代码中超出绘图范围的错误计算。
- 行位置:统一逻辑,确保每个数字对应正确的行(比如i=5对应第1行,i=10对应第2行),偏移0.5实现单元格内居中效果。
内容的提问来源于stack exchange,提问作者Adams
相关产品推荐
相关产品推荐

