我正在使用一个输出svg对象的函数。如我所见,SVG对象本质上是一个字符串。我想知道如何1)绘制函数的svg输出2)将此svg对象保存到svg扩展名下的磁盘上?我尝试了ggsave,但只是导致了错误。
我对svg处理是相当陌生的,因此,感谢您的投入。谢谢!
1)我尝试过针对正在开发的程序包进行操作,但这并不简单。最后,我需要两个库:rsvg
和grImport2
。这是我使用的代码:
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::readPicture
和grImport2::grid.picture
在绘图窗口中显示转换后的文件。我还剩下用户可以设置布尔变量(systemShow
)的部分,程序包将尝试在默认的系统svg查看器上打开文件。
2)那要容易得多。您只需要将代码以文本形式写入文件,例如cat(svg_code, file='path_to_file.svg')
。