将svg对象保存到磁盘上

问题描述 投票:0回答:1

我正在使用一个输出svg对象的函数。如我所见,SVG对象本质上是一个字符串。我想知道如何1)绘制函数的svg输出2)将此svg对象保存到svg扩展名下的磁盘上?我尝试了ggsave,但只是导致了错误。

我对svg处理是相当陌生的,因此,感谢您的投入。谢谢!

r svg
1个回答
2
投票

1)我尝试过针对正在开发的程序包进行操作,但这并不简单。最后,我需要两个库:rsvggrImport2。这是我使用的代码:

  tfile <- tempfile(fileext = ".svg")
  tfile2 <- tempfile(fileext = ".png")
  cat(svg_code, file=tfile)
  if (requireNamespace("rsvg", quietly = TRUE) && requireNamespace("grImport2", quietly = TRUE)) {
    rsvg::rsvg_svg(svg = tfile, tfile2)
    p <- grImport2::readPicture(tfile2)
    grImport2::grid.picture(p)
  } else {
    if (systemShow == FALSE && outFile == ''){
      warning("The figure cannot be rendered in the plot window. Please, use the arguments outFile and/or systemShow.")
    }
  }
  if (systemShow){
    utils::browseURL(tfile)
  }

第一个条件是如果系统不允许安装任何一个软件包。如您所见,首先需要将svg代码(svg_code)写入文件,在这种情况下是临时文件(tfile)。然后,rsvg_svg写入一个临时png文件(tfile2)。最后,grImport2::readPicturegrImport2::grid.picture在绘图窗口中显示转换后的文件。我还剩下用户可以设置布尔变量(systemShow)的部分,程序包将尝试在默认的系统svg查看器上打开文件。

2)那要容易得多。您只需要将代码以文本形式写入文件,例如cat(svg_code, file='path_to_file.svg')

© www.soinside.com 2019 - 2024. All rights reserved.