Skip to content
forked from r-lib/svglite

A lightweight svg graphics device for R

Notifications You must be signed in to change notification settings

nathanwebb/svglite

 
 

Repository files navigation

svglite

Travis-CI Build Status Coverage Status CRAN_Status_Badge

svglite is a graphics device that produces clean svg output, suitable for use on the web, or hand editing. Compared to the built-in svg(), svglite is considerably faster, produces smaller files, and leaves text as is.

Installation

Install the development version from github with:

# install.packages("devtools")
devtools::install_github("hadley/svglite")

Benchmarks

Compared to the base svg device, svglite is quite a bit faster:

library(svglite)
x <- runif(1e3)
y <- runif(1e3)

tmp1 <- tempfile()
tmp2 <- tempfile()
system.time({
  svglite(tmp1)
  plot(x, y)
  dev.off()
})
#>    user  system elapsed 
#>   0.003   0.001   0.003 

system.time({
  svg(tmp2, onefile = TRUE)
  plot(x, y)
  dev.off()
})
#>    user  system elapsed 
#>   0.015   0.001   0.017 

It also produces considerably smaller files:

file.size(tmp1) / 1024
#> [1] 93.54785
file.size(tmp2) / 1024
#> [1] 321.1357

In both cases, compressing to make .svgz is worthwhile:

gz <- function(in_path, out_path = tempfile()) {
  out <- gzfile(out_path, "w")
  writeLines(readLines(in_path), out)
  close(out)
  
  invisible(out_path)
}
file.size(gz(tmp1)) / 1024
#> [1] 9.064453
file.size(gz(tmp2)) / 1024
#> [1] 38.6123

About

A lightweight svg graphics device for R

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 53.7%
  • R 46.3%