如何导入svg文件,更改它,然后再次导出?

时间:2015-09-24 10:54:21

标签: r svg

在我的工作流程中,我希望能够将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">

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"))

这会调整画布的大小。