我正在尝试使用grImport包(http://cran.r-project.org/web/packages/grImport/index.html)将外部矢量图像导入到R图中,例如,我拍摄了这张图片:

然后我使用ImageMagick的convert将其转换为ps:
convert crashed.jpg crashed.psI启动R并发出以下命令:
R> library("grImport")
R> PostScriptTrace("crashed.ps", "crashed.xml")
R> myPic = readPicture("crashed.xml")
R> grid.picture(myPic)然后,根据http://cran.r-project.org/web/packages/grImport/vignettes/import.pdf的说法,图像应该被显示出来。但我得到的只是一个空洞的情节!
R> sessionInfo()
R version 3.1.3 (2015-03-09)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.10.3 (Yosemite)发布于 2019-10-17 00:02:17
这是一个相当古老的问题。考虑到这个问题仍然没有答案,我想我应该分享一些将外部图形合并到R图中的现代工具。
前言
使用ImageMagick或等效工具,将源.jpg转换为.pdf。在Linux上,这是使用convert crashed.jpg crashed.pdf完成的。我们还将在整个答案中使用以下基准图:
library( ggplot2 )
g0 <- ggplot( mtcars, aes(disp, mpg) ) + geom_point() + theme_bw()使用grImport2将图像作为打印面板导入
我们首先使用grConvert将.pdf转换为.svg,然后将其导入并转换为grob对象。
grConvert::convertPicture( "crashed.pdf", "crashed.svg" )
p <- grImport2::readPicture( "crashed.svg" )
g <- grImport2::pictureGrob( p )
gridExtra::grid.arrange( g0, g, nrow=1 )

使用cowplot将图像覆盖在现有地块的顶部
与上面不同的是,此解决方案直接与.jpg配合使用:
## Ensure magick is installed for draw_image()
if(!require("magick")) install.packages( "magick" )
cowplot::ggdraw(g0) + cowplot::draw_image("crashed.jpg", x=0.25, y=0.25, scale=0.25)

在egg的帮助下将图像用作绘图元素
这种方法也可以直接与.jpg一起使用。我们加载图像,并用生成的对象填充mtcars中的新列。然后,可以将该列以标准的ggplot方式提供给geom_custom():
mtcars$img <- list(jpeg::readJPEG( "crashed.jpg" ))
g0 + egg::geom_custom( data=mtcars, aes(data=img), grob_fun=grid::rasterGrob,
fun_params = list(height=unit(1,"lines")) )

https://stackoverflow.com/questions/29919866
复制相似问题