I’m pleased to announced a new package for producing SVG s from R: svglite . This package is a fork of Matthieu Decorde RSvgDevice and wouldn’t be possible without his hard work. I’d also like to thank David Gohel who wrote the gdtools package: it solves all the hardest problems associated with making good SVGs from R.
Today, most browsers have good support for SVG and it is a great way of displaying vector graphics on the web. Unfortunately, R’s built-in svg() device is focussed on high quality rendering, not size or speed. It renders text as individual polygons: this ensures a graphic will look exactly the same regardless of what fonts you have installed, but makes output considerably larger (and harder to edit in other tools). svglite produces hand-optimised SVG that is as small as possible.
Features#
svglite is a complete graphics device: that means you can give it any graphic and it will look the same as the equivalent .pdf or .png. Please file an issue
if you discover a plot that doesn’t look right.
Use#
In an interactive session, you use it like any other R graphics device:
|
|
If you want to use it in knitr, just set your chunk options as follows:
```r setup, include = FALSE
library(svglite)
knitr::opts_chunk$set(
dev = "svglite",
fig.ext = ".svg"
)
(Thanks to Bob Rudis for the tip )
There are also a few helper functions:
-
htmlSVG()makes it easy to preview the SVG in RStudio. -
editSVG()opens the SVG file in your default SVG editor. -
xmlSVG()returns the SVG as an xml2 object.

