在R图中组合grid.table和基础包图

时间:2014-05-02 10:55:02

标签: r gridextra

我正在尝试将grid.table中的表格与基础包中的图表组合成一个图表。据我所知,grid.table产生的输出类型与ggplot生成的输出类型相同。所以问题类似于这个帖子中的问题:

Combine base and ggplot graphics in R figure window

我尝试从该线程应用解决方案,但它对我不起作用。第一个表放在正确的位置,但第二个表不是。如果我的grid.table生成的表不超过1个,那么该线程的解决方案就可以工作。我需要做哪些修改才能使它适用于多个表?

这是我的代码:

library(gridBase)
library(gridExtra)

pdf("test-grid.pdf")
par(mfrow=c(2,2))

data(mtcars)
sample_table1 <- matrix(1,3,5)
sample_table2 <- matrix(2,2,2)

plot.new()
vps <- baseViewports()
pushViewport(vps$figure)
vp1 <-plotViewport()
grid.table(sample_table1)

plot.new()
vps <- baseViewports()
pushViewport(vps$figure)
vp1 <-plotViewport()
grid.table(sample_table2)

plot(mtcars$mpg, mtcars$cyl)
plot(mtcars$disp, mtcars$hp)

dev.off()

1 个答案:

答案 0 :(得分:2)

您忘记弹出视口,因此您的第二个grid.table仍处于第一个视口中。因此,只需在每个popViewport()命令后使用grid.table即可。

library(gridBase)
library(gridExtra)

pdf("test-grid.pdf")
par(mfrow=c(2,2))

data(mtcars)
sample_table1 <- matrix(1,3,5)
sample_table2 <- matrix(2,2,2)

plot.new()
vps <- baseViewports()
pushViewport(vps$figure)
vp1 <-plotViewport()
grid.table(sample_table1)
popViewport()

plot.new()
vps <- baseViewports()
pushViewport(vps$figure)
vp1 <-plotViewport()
grid.table(sample_table2)
popViewport()

plot(mtcars$mpg, mtcars$cyl)
plot(mtcars$disp, mtcars$hp)

dev.off()