首页 > 解决方案 > Annotation_custom 不在指定位置的 ggplot 上定位表 grob

问题描述

我在 ggplot2 上绘制了一个汇总表,其中

annotation_custom(tableGrob(SummaryTable), xmin=xmin ,xmax = xmax)

一切都很好,除了汇总表不遵循指定的确切数据位置,它需要通过查看图表手动调整,并且对于它工作的每个不同的变量图表,但与 xmin 和 xmax 值有一些偏移。根据 R 中的帮助,xmin 和 xmax 是数据坐标。我只想将 grob 放在主图的右上角。这个项目中有很多图表,运行在相同的代码上。我可以手动将每个图表居中 xmin 和 xmax 值,但这样的工作很乏味,我想通过矢量化操作使其保持自动。

我已经看到很多问题都在问类似的问题,但总的来说(我能找到的)解决方案是用其他方式,比如使用 gtable/viewport/ggsave 等。

我已经对我的工作进行了最后的润色,所以我首先需要确定 annotation_custom 是否可以很好地完成这项工作?当然,学习新的替代方案是理想的,这就是我们学习的方式,但请指出我现有的工作是否可以在当前使用的解决方案中完成。

标签: rggplot2

解决方案


我想我可以理解 annotation_custom 的工作原理以及如何精确地动态居中位置。

我再次深入阅读了 R 帮助并指出: “annotation_custom 期望 grob 填充由 xmin、xmax、ymin、ymax 定义的整个视口。具有不同(绝对)大小的 Grob 将在该区域居中对齐。Inf 值可用于填充整个绘图面板(参见示例)。”

因此,现在以这种方式解释,如果 xmin 和 xmax 的定义不同(不是 Inf 如此),则该表格视觉应该被绘制为中心对齐,这意味着我当前的输出看起来正确但中心对齐。

我现在制作了另一个向量,在我的例子中是 xmin=(Avg+Max)/2 和 xmax=Inf。所以至少表格打印是定义的位置。

虽然我需要微调公式以防只需要触及情节的极端。但我的目的达到了。


推荐阅读