2014-10-30 72 views
6

我想添加一个.png图像(标志)到我的pdf格式报告的图形使用ggplot创建并打印到PDF的标题。添加图像(PNG文件)到用R创建的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() 

...其产生的PDF格式,看起来像这样:

enter image description here

但是,我想形象展现出来的ggplot区域之外。或者更具体地说,我希望图像在报告标题中显示(在左上角),如下面的例子:

enter image description here

我发现下面的功能,可用于创建文本的注脚,但WASN不知道如何修改它来插入.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() 
    } 

任何援助将不胜感激。

+0

你用乳胶或降价?如果是的话,那么你可以使用'wallpaper'包装:'\ ULCornerWallPaper {1} {path/to/logo}; \ includegraphics {path/to/ggplot/image}' – tonytonov 2014-10-30 07:29:03

+0

@Tonytonv:谢谢您的回复。为了澄清,我的图像不是ggplot的产品,而是保存的图像(即.png文件)。我会看看乳胶和降价,但认为应该有一个简单的方法来做到这一点与基本图形。不幸的是,我已经走了ggplot路线,所以我不熟悉基础图形。再次感谢您的建议。 – MikeTP 2014-10-30 15:29:01

+0

请注意,PDF规范不支持PNG。因此,在插入之前,您的PNG将被转换为其他内容,可能是JPEG。我建议你自己做这种转换,以你想要的格式,以你想要的质量进行,这样你就可以确定最终产品的质量。我会推荐JPEG2000。 – Alasdair 2014-11-16 18:02:42

回答

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) 

enter image description here

+0

这是在标题上面打印图像(添加'实验室(标题= ...)')时,所以它在绘图顶部消耗更多空间。即这不是OP要求的'报告标题'。 – 2017-09-27 08:10:08