【问题标题】:Combining grid.table and base package plots in R figure在 R 图中结合 grid.table 和基本包图
【发布时间】:2014-05-02 10:55:01
【问题描述】:

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

Combine base and ggplot graphics in R figure window

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

【问题讨论】:

    标签: r gridextra


    【解决方案1】:

    您忘记弹出视口,因此您的第二个grid.table 仍在第一个视口中。所以只需在每个grid.table 命令之后使用popViewport(),它应该可以工作。

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

    【讨论】:

    • 我认为没有必要自己推送/弹出视口,grid.table(sample_table1, vp=baseViewports()$figure) 也应该这样做
    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 2014-12-15
    • 1970-01-01
    • 2012-07-31
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多