我遇到以下情况:我使用外部命令(plantuml)来创建图形。这是通过使用a (my) package通过R完成的。生成的图表可以是文件(png
,svg
,eps
,pdf
,vdx
或LaTeX/Tikz
,有或没有前导码)或我可以使用相同的格式将图像发送到stdout
。
现在我想将此图形绘制为尽可能像R一样,即在图形设备中。目前我正在使用一个临时文件,我使用readPNG()
和grid::grid.raster()
显示该文件,但我对此方法并不满意
因此我的问题是:
plantuml
的结果)直接输入设备而无需创建中间文件?答案 0 :(得分:1)
我建议使用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
生成从STDIN
读取的SVG数据。在您的情况下,您可以通过调用plantuml
来替换它。