代码之家  ›  专栏  ›  技术社区  ›  Pryore

将徽标添加到R中的grid.table PDF输出

  •  0
  • Pryore  · 技术社区  · 7 年前

    library(grid)
    library(gridExtra)
    
    Data <- data.frame(Staff = c("Rod","Barry","Cheiny"),
                   M1 = c(50,40,55),
                   M2 = c(60,50,55),
                   M3 = c(55,50,45))
    
    
    maxrow <- c(35);
    npages <- ceiling(nrow(Data)/maxrow);
    pdf("Data.pdf", height = 11, width = 10)
    idx <- seq(1, maxrow)
    grid.table(Data, rows = NULL, theme = ttheme_minimal())
    grid.text("data",gp = gpar(fontsize = 12,fontface = "bold",alpha = 0.5), 
               vjust = -40,
               hjust = -0.5)
    for (i in 2:npages){
      grid.newpage();
      if(i*maxrow <= nrow(Data)) {
        idx <- seq(1+((i-1)*maxrow), i*maxrow)
      }else{
        idx <- seq(1+((i-1)*maxrow), nrow(Data))
      }
      grid.table(Data, rows =NULL, theme = ttheme_minimal())
    }
    dev.off()
    

    目前我得到了一个合理的输出,但我想在生成的每个页面上添加一个徽标。

    有人知道如何添加一个会在所有页面上重复的徽标吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   user10653779    7 年前

    使用grid.draw()添加元素很容易,但设计取决于您

    library(grid)
    library(gridExtra)
    
    Data <- data.frame(Staff = c("Rod","Barry","Cheiny"),
                       M1 = c(50,40,55),
                       M2 = c(60,50,55),
                       M3 = c(55,50,45))
    
    library(png)
    img <- readPNG(system.file("img", "Rlogo.png", package="png"))
    
    footer <- grobTree(rectGrob(y=0,vjust=0,gp=gpar(fill="grey97",col=NA), height=unit(1,"in")),
                       textGrob(y=unit(0.5,"in"), expression(Corporate^TM~line~(c))),
                       rasterGrob(img, x=1, hjust=1,y=unit(0.5,"in"),height=unit(1,"in")-unit(2,"mm")))
    
    maxrow <- c(35);
    npages <- ceiling(nrow(Data)/maxrow);
    pdf("Data.pdf", height = 11, width = 10)
    idx <- seq(1, maxrow)
    grid.table(Data, rows = NULL, theme = ttheme_minimal())
    grid.draw(footer)
    grid.text("data",gp = gpar(fontsize = 12,fontface = "bold",alpha = 0.5), 
              vjust = -40,
              hjust = -0.5)
    for (i in 2:npages){
      grid.newpage();
      if(i*maxrow <= nrow(Data)) {
        idx <- seq(1+((i-1)*maxrow), i*maxrow)
      }else{
        idx <- seq(1+((i-1)*maxrow), nrow(Data))
      }
      grid.table(Data, rows =NULL, theme = ttheme_minimal())
      grid.draw(footer)
    }
    dev.off()