2

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

在 R 图形窗口中组合 base 和 ggplot 图形

我试图从该线程应用解决方案,但它对我不起作用。第一张桌子放置在正确的位置,但第二张桌子没有。如果我有不超过 1 个由 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)

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()
4

1 回答 1

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()
于 2014-05-02T11:27:17.160 回答