在设备中绘制图

雷纳

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

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

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

因此,我的问题是:

  1. 有没有办法在R中的图形设备中显示任何矢量格式?
  2. 是否可以将stdout(对的调用结果plantuml)直接通过管道传输到设备中,而无需创建中间文件?
拉尔夫·斯塔伯纳

我建议使用grImportgrImport2前者支持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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章