在R中创建具有相同尺寸比的不同图

时间:2015-12-07 21:11:36

标签: r plot ggplot2

我创建了一个创建森林图的函数,它在y轴上有标签。我需要创建一些它们来加入外部图形程序。

图形图像将具有相同的宽度,但高度将根据y元素的数量而变化。为此,我首先创建了一个图并手动设置图像高度(i.h1)。然后我从i.h1上部(u.m)和底部(b.m)边距中减去以获得绘图高度。最后,我将绘图高度除以y标签n1的数量,以获得一个单位维u = (i.h1 - b.m - u.m) / n1

要获得后续图片h.i2的大小,我只需要h.i2 = u * n2 + b.m + u.m

这里是第一张图像的结果,包含27个元素(计算空格)和第二个带有6个元素的图像。

第二张图片高于应有的图像! (紫色线条用于比较)。

此外,下部元件和x轴之间的内部边缘是不同的。因此,即使我使用不同的单位高度,我也会在2张图像中找不到对齐的标签。

enter image description here

我不明白这种行为。任何提示?

这是保存图片的代码:

gt <- ggplot_gtable(ggplot_build(plot)) #plot is a ggplot object
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)

if (file != F) {
    w = 8.5
    h = .33 * max(data$yval) + 4 # .33 is the unit height and 4 are the margin

    dev.copy(pdf, if (file == T) sprintf("%s.pdf", gsub('\\n', '', title)) else file, width = w, height = h) # I use dev.copy because ggsave don't accept gtable plots.

    invisible(dev.off())
}

0 个答案:

没有答案