svgliteというパッケージが出ました。
これは、プロットをSVGとして出力するときに使うものです。png()
とかjpeg()
と同じノリで使います。Rの組み込みのsvg()
もあるんですが、重かったり遅かったりするということでつくられたらしいです。
Unfortunately, R’s built-in
svg()
device is focussed on high quality rendering, not size or speed.
R Markdownでも使えて、こんな風にチャンクオプションを指定しておくと、画像をSVGで出力してくれます。
```{r setup, include = FALSE} library(svglite) knitr::opts_chunk$set( dev = "svglite", fig.ext = "svg" ) ```
小ネタとしては、こんな風にすると直接SVGを埋め込むこともできます。
```{r setup} library(knitr) library(svglite) local({ knit_hooks$set(plot = function(x, options) { paste(readLines(x), collapse = '\n') }) opts_chunk$set( dev = "svglite", dev.args = list(standalone = FALSE), fig.ext = "svg" ) }) ```
するとどういうことができるかというと、SVGにスタイルが付けられます。アニメーションとかできます。
たとえばこんな感じのCSSをつくって、
polyline { stroke-dasharray: 50; animation: dash 10s linear; } @keyframes dash { to { stroke-dashoffset: 2000; } }
YAML Front-matterに指定すると、
output: html_document: css: svglite_test.css
こんな気持ち悪いものができます。
RPubs - svglite + SVG animation
うーん。。
生成されてくるSVGには、どの線が何に使われているか(データを表す線なのか、枠線なのかとか)を判別する情報がないので、こんな風に一括でスタイルを設定するようなことしかできません。この小ネタは、あんまり意味のある用途には使えなさそうです。
なにかいい使い方あれば教えてください。