r语言 - 在设备中绘制图形



我有以下情况:我使用外部命令(plantuml(来创建图形。这是通过使用(我的(包通过 R 完成的。生成的图形可以是文件(pngsvgepspdfvdxLaTeX/Tikz,有或没有前导码(,或者我可以使用相同的格式将图像发送到stdout

现在我想尽可能像R一样绘制这个图,即在图形设备中。目前我正在使用一个临时文件,我使用readPNG()grid::grid.raster()显示它有效,但我对这种方法不太满意

  1. 我必须使用我想避免的临时文件,并且
  2. 它是一种光栅格式,我更喜欢矢量格式。

因此,我的问题是:

  1. 有没有办法在 R 中显示图形设备中的任何矢量格式?
  2. 我可以将 stdout(调用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生成从STDIN读取的 SVG 数据。在您的情况下,您可以将其替换为调用plantuml

相关内容

  • 没有找到相关文章

最新更新