在我的工作流程中,我希望能够将svg文件导入r,更改宽度和高度,然后再次导出。有谁知道可以做到这一点的包?我和xml
函数一起尝试了svg()
个包,但没有成功。我想将宽度从720px更改为800px,将高度从150px更改为200px。
这是svg文件的一部分:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="720px" height="150px" viewBox="0 0 720 150" version="1.1">
答案 0 :(得分:0)
喜欢这个?
library(XML)
svg <- '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="75.405006"
height="75.405006"
id="svg11758">
<defs
id="defs11760" />
<metadata
id="metadata11763">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-322.56587,-311.71745)"
id="layer1">
<path
d="m 397.97087,349.41995 a 37.702503,37.702503 0 1 1 -75.405,0 37.702503,37.702503 0 1 1 75.405,0 z"
id="path11770"
style="color:#000000;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
</svg>'
xml <- xmlParse(svg, asText = TRUE)
d <- xmlRoot(xml)
xmlAttrs(d) <- setNames(as.numeric(xmlAttrs(xmlRoot(xml))[c("width", "height")]) * 2, c("width", "height"))
saveXML(xml, file = tf <- tempfile(fileext = ".xml"))
这会调整画布的大小。