Pregunta Añadir imagen (archivo png) al encabezado del archivo pdf creado con R


Estoy intentando agregar una imagen .png (logotipo) al encabezado de mi informe en PDF de gráficas creadas con ggplot e impresas en pdf.

Encontré el siguiente ejemplo de cómo agregar una imagen. a un ggplot trama. Pero estoy buscando agregar la imagen .png al encabezado del pdf que está fuera del área de ggplot.

#-------------------------------------------------------------------------------
#  Example png file
#-------------------------------------------------------------------------------
library(reshape2)
library(png)
mypngfile = download.file('http://api.altmetric.com/donut/502878_64x64.png', 
                           destfile = 'mypng.png', mode = 'wb')
mypng = readPNG('mypng.png')

#-------------------------------------------------------------------------------
# create example plot using mtcars data frame from ggplot
#-------------------------------------------------------------------------------
library(ggplot2)
p.example = qplot(mpg, wt, data = mtcars) + 
  annotation_raster(mypng, ymin = 4.5, ymax= 5, xmin = 30, xmax = 35)

#-------------------------------------------------------------------------------
# print to pdf file with footnote
#-------------------------------------------------------------------------------
fname = "C:/temp/my report.pdf"
pdf(fname, 10.75, 6.5, onefile=TRUE, paper="a4r")
print(p.example)
dev.off()

... que produce un pdf que se parece a esto:

enter image description here

Pero, me gustaría que la imagen se muestre fuera del área de ggplot. O más específicamente, quiero que la imagen se muestre en el encabezado del informe (en la parte superior izquierda) como en el siguiente ejemplo:

enter image description here

Encontré la siguiente función que se puede usar para crear una nota al pie de texto, pero no estaba seguro de cómo modificarla para insertar una imagen .png.

    makeFootnote <- function(footnoteText= format(Sys.time(), "%d %b %Y"), 
                              size= .4, color= grey(.5))
    {
      require(grid)
      pushViewport(viewport())
      grid.text(label= footnoteText ,
                x = unit(1,"npc") - unit(12, "mm"),
                y = unit(0.1, "mm"),
                just=c("right", "bottom"),
                gp=gpar(cex= size, col=color))
      popViewport()
    }

Cualquier ayuda sería muy apreciada.


6
2017-10-30 03:48


origen


Respuestas:


Aquí hay una sugerencia,

library(ggplot2)
p.example = qplot(mpg, wt, data = mtcars)

library(grid)
library(gtable)
ann <- rasterGrob(mypng, width=unit(1,"cm"), x = unit(0.5,"cm"))
g <- ggplotGrob(p.example)

g <- gtable_add_rows(g, grobHeight(ann), 0)
g <- gtable_add_grob(g, ann, t=1, l=4)
grid.newpage()
grid.draw(g)

enter image description here


10
2017-11-10 19:47