我正在尝试将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()
答案 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()