在绘图区域之外使用网格来注释网格图。

问题描述 投票:0回答:1

我经常使用网格包来创建数字。然后我使用 grid::grid.text() 来注释绘图区域外的数字。通常情况下,我制作PDF文件,没有问题。

现在我需要将我的数字保存为其他格式,比如PNG。而我现在发现,当我尝试在绘图区域之外进行注释时,注释被剪掉了。下面是一个小例子。

library(grid)
library(gridExtra)
library(lattice)

myPanel <- function (...) { 
  panel.xyplot(...)
  grid.text("This is a very, very long line", x = .99, y = .5)
}
xyplot(1:10 ~ 1:10, panel = myPanel, par.settings = list(clip = list(panel="off")))

我可以用以下方法解决这个问题 gridExtra::grid.arrange()但这似乎是解决一个简单问题的过于复杂的方法。

myPlot_grob     <- grid.grab(wrap = TRUE)
rectTransparent <- rectGrob(gp = gpar(col = 'transparent', fill = 'transparent'))
grid.arrange(
  grobs = list(
    rectTransparent,
    myPlot_grob,
    rectTransparent),
  ncol = 3,
  widths = unit(c(2, 4, 2), 'inches'))

还有没有更简单的方法?我有Deepayan Sarkar的格子书和Paul Murrell的 R图形。 但我没有在其中找到明确的解决方案。有相关的SO帖子,对于这个问题,当它出现在 基础图形ggplot但我还没有找到关于网格图形问题的帖子。

r lattice clipping r-grid
1个回答
1
投票

你可以手动调整margin padding。

lattice.options(layout.widths=list(left.padding=list(x=0), right.padding=list(x=5)))

xyplot(1:10 ~ 1:10, panel = myPanel, par.settings = list(clip = list(panel="off")))

enter image description here

但由于必须手动完成,所以可能不是一个理想的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.