You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取R语言中grid()绘制网格的单元格中心坐标?

获取R绘图中grid()网格单元格的中心坐标

要获取grid()生成的网格每个单元格的中心坐标,核心思路是基于当前绘图的轴刻度来计算——因为grid()的网格线就是对齐轴刻度的。下面是具体的实现步骤:

  • 首先获取当前绘图的x轴和y轴实际显示的刻度值
  • 计算相邻刻度的中点,得到每个网格单元格在x和y方向的中心位置
  • 组合x和y方向的中心,得到所有网格单元格的坐标对

完整代码示例

# 先运行你的绘图代码(确保绘图区域和网格已生成)
plot(rb22, xlim=c(4027200,4030200), ylim=c(697500,700100))
grid()

# 获取x、y轴的刻度值
x_ticks <- axTicks(1)
y_ticks <- axTicks(2)

# 计算x方向的单元格中心:相邻刻度的平均值
x_centers <- (x_ticks[-1] + x_ticks[-length(x_ticks)]) / 2

# 计算y方向的单元格中心
y_centers <- (y_ticks[-1] + y_ticks[-length(y_ticks)]) / 2

# 生成所有网格中心的坐标组合(笛卡尔积)
grid_centers <- expand.grid(x = x_centers, y = y_centers)

# 查看结果
print(grid_centers)

验证方法

如果你想确认这些坐标是否正确,可以把中心坐标点到图上:

points(grid_centers$x, grid_centers$y, col="red", pch=16, cex=0.8)

运行后会看到红色小点精准落在每个网格单元格的中心,说明计算正确。

补充说明

axTicks(1)和axTicks(2)会直接返回当前绘图区域实际显示的轴刻度值,比手动从par("xaxp")计算更直观。如果你想用par()的方式获取刻度,代码如下:

x_info <- par("xaxp")
x_ticks <- seq(x_info[1], x_info[2], length.out = x_info[3] + 1)

结果和axTicks(1)完全一致。

内容的提问来源于stack exchange,提问作者Purna Gamage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:44:51