将图像(png文件)添加到使用R创建的pdf文件的标题中

Mik*_*eTP 6 pdf graphics r ggplot2 usergrid

我正在尝试将.png图像(徽标)添加到使用ggplot创建的图形的pdf报告的标题中并打印到pdf.

我找到了以下示例如何将图像添加到ggplot图中.但是,我希望将.png图像添加到ggplot区域之外的pdf标题中.

#-------------------------------------------------------------------------------
#  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()
Run Code Online (Sandbox Code Playgroud)

...产生一个如下所示的pdf:

在此输入图像描述

但是,我希望图像显示在ggplot区域之外.或者更具体地说,我希望图像显示在报告标题中(左上角),如下例所示:

在此输入图像描述

我发现以下函数可用于创建文本脚注,但不知道如何修改它以插入.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()
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

bap*_*ste 10

这是一个建议,

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述