我有以下情况:我使用外部命令(plantuml)创建图形。这是通过R使用(my)包完成的。将得到的图形可以是文件(png
,svg
,eps
,pdf
,vdx
或LaTeX/Tikz
具有或不具有前导码)或我可以发送图像stdout
,使用相同的格式。
现在,我想将此图形绘制得尽可能像R,即在图形设备中。目前,我正在使用一个临时文件,该文件可以显示readPNG()
并grid::grid.raster()
可以使用,但是我对这种方法并不满意。
因此,我的问题是:
plantuml
)直接通过管道传输到设备中,而无需创建中间文件?我建议使用grImport或grImport2。前者支持PostScript,而后者支持SVG。请注意,通常需要对SVG图像进行后处理:
library(magrittr)
infile <- tempfile()
svglite::svglite(infile, width = 10, height = 7)
ggplot2::qplot(mpg, wt, data = mtcars, colour = factor(cyl))
dev.off()
system(paste("cat", infile), intern = TRUE) %>%
paste0(., collapse = "") %>%
charToRaw(.) %>%
rsvg::rsvg_svg(NULL, file = NULL) %>%
rawToChar(.) %>%
grImport2::readPicture(.) %>%
grImport2::grid.picture(.)
上面的示例使用了人工cat
生成的SVG数据,该数据是从读取的STDIN
。根据您的情况,您可以将其替换为plantuml
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句