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

如何在ggplot2中获取绘图左下角角落的精确X、Y坐标?

如何获取ggplot2散点图中特定点的精确坐标?

嘿,我来帮你解决这个问题!你已经用这段代码画出了mtcars数据集里hp(马力)和wt(车重)的散点图:

xbreaks <- c(100, 200, 300)
ybreaks <- c(2, 3, 4, 5)
ggplot(mtcars, aes(hp, wt)) + 
  scale_x_continuous(breaks=xbreaks) + 
  scale_y_continuous(breaks=ybreaks) + 
  geom_point()

想拿到左下角绿点的精确坐标,其实有几种简单的方法在R里实现:

  • 直接从源数据筛选
    因为散点图的点完全来自mtcars数据集,你可以直接找出符合视觉特征的行——比如找马力最小(x值最小)的记录:

    # 找出hp最小的行
    mtcars[which.min(mtcars$hp), ]
    

    运行后会看到这是Honda Civic的记录,精确坐标是hp=52,wt=1.615。如果是找车重最小(y值最小)的点,用which.min(mtcars$wt)即可,对应Lotus Europa的hp=110,wt=1.513。

  • 从ggplot绘图对象提取数据
    如果不确定具体是哪个点,或者你的图做了坐标变换,可以通过ggplot_build()提取绘图用的原始数据:

    # 先把绘图对象保存为变量
    p <- ggplot(mtcars, aes(hp, wt)) + 
      scale_x_continuous(breaks=xbreaks) + 
      scale_y_continuous(breaks=ybreaks) + 
      geom_point()
    
    # 提取geom_point层的绘图数据
    plot_data <- ggplot_build(p)$data[[1]]
    
    # 按x值排序,找到最小的那个点
    plot_data %>% dplyr::arrange(x) %>% dplyr::select(x, y)
    

    这样就能看到所有点的精确x、y值,排序后最顶部的就是左下角的点啦。

内容的提问来源于stack exchange,提问作者Nick Brown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:05:50