制作网格排列 - 绘制多个图的ggplot2问题

时间:2016-03-18 16:19:01

标签: r ggplot2 grid gridextra

我是安排网格的新手。下面是我自己的尝试,这是非常混乱,首先,网格似乎没有在y轴上对齐(我希望桌子正好在图表下方)。其次,根据窗口大小,表格无法正确缩放到图形。

如何解决这个问题?我在哪里可以获得有关对齐网格的更多信息?

表格数据

> AAK.stats

                           NA
    Observations    1811.0000
    NAs                0.0000
    Minimum           -0.0612
    Quartile 1         0.0000
    Median             0.0000
    Arithmetic Mean    0.0008
    Geometric Mean     0.0007
    Quartile 3         0.0013
    Maximum            0.0696
    SE Mean            0.0003
    LCL Mean (0.95)    0.0003
    UCL Mean (0.95)    0.0013
    Variance           0.0001
    Stdev              0.0110
    Skewness           0.9051
    Kurtosis           5.9795

代码

> grid.arrange(chart(AAK.strategy), tableGrob(t(AAK.stats)))

输出

enter image description here

1 个答案:

答案 0 :(得分:3)

关于调整tableGrob大小的主题有several questions already。我总是要问的问题是:你希望它如何调整大小?默认情况下,它会调整行/列大小,以便所有文本都适合。这意味着表的固定物理尺寸。它可以手动调整,但必须决定是否

  • alter the font size
  • set the sizes arbitrarily,例如用" null"单位,并希望文本适合。有了这个策略,我们仍然需要决定是否应该给每个行/列提供相等的空间,或者应该保持相对间距。

无论如何,为了重现性,让我们从一个可重复的例子开始

library(gridExtra)
library(ggplot2)

p <- ggplot()

t <- tableGrob(iris[1,], rows = NULL)
grid.arrange(p,t)

enter image description here

在这种情况下,我会按如下方式调整图表的大小,

library(gtable)
library(grid)

g <- ggplotGrob(p)
margin <- unit(0.5,"line")
# allocate a new row to fit the table
g <- gtable_add_rows(g, sum(t$heights) + margin)
# locate the plot panel column
panel <- g$layout[g$layout$name == "panel", "l"]
# add the table
g <- gtable_add_grob(g, t, nrow(g), panel)
# set the plot panel width to the table's width
g$widths[panel] <- list(sum(t$widths))
grid.newpage()
grid.draw(g)

enter image description here