【发布时间】:2020-03-22 18:35:59
【问题描述】:
如何在 ggplot 中获取 geom_point 的 x、y 坐标,其中参考frame 是整个绘制的图像吗?
我可以使用一些 geom_point 创建一个 ggplot:
library(ggplot2)
my.plot <- ggplot(data.frame(x = c(0, 0.456, 1), y = c(0, 0.123, 1))) +
geom_point(aes(x, y), color = "red")
这给出了:
通过将其转换为 grob,我可以提取有关此 ggplot 的一些附加信息,例如相对于绘图面板的坐标,由紫色箭头标记。但是,这忽略了轴所占用的空间。
my.grob <- ggplotGrob(my.plot)
my.grob$grobs[[6]]$children[[3]]$x
# [1] 0.0454545454545455native 0.46native 0.954545454545454native
my.grob$grobs[[6]]$children[[3]]$y
# [1] 0.0454545454545455native 0.157272727272727native 0.954545454545454native
当我从整个图像的左下角开始测量时,如何获取 x、y 坐标的值,用绿色箭头标记?
如果可能的话,我希望解决方案考虑到 ggplot 的 主题。添加像+ theme_void() 这样的主题 会影响坐标轴,还会改变点相对于整个绘制图像的位置。
更新: 我意识到轴的字体大小会根据绘图的宽度和高度而变化,从而影响 绘图面板 的相对大小。因此,在不定义 绘图宽度 和 绘图高度 的情况下以 npc 为单位提供位置并非易事。如果可能,将 geom_points 的位置作为 plot width 和 plot height 的函数给出。
【问题讨论】:
-
为什么投了 2 票?
-
是的,如果您有任何疑虑或建议,请发表评论。
-
请考虑绘图本身没有固定尺寸 - 绝对点位置不仅取决于打印设备的大小,还取决于轴的比例。因此很好奇你需要它来做什么
-
关于否决票,请注意,我不需要证明我的问题是对 SE 的有效问题。为什么我想知道?因为我愿意。
-
这个也是。但从未得到真正的答案stackoverflow.com/questions/48710478/…