This package provides graphic devices for R based on the AGG library developed by the late Maxim Shemanarev. AGG provides both higher performance and higher quality than the standard raster devices provided by grDevices. For a comparison with the default devices, see the performance and quality vignettes.
The package can be installed from CRAN with
install.packages('ragg')
or, if the development version is
desired, directly from github:
# install.packages('pak')
::pak('r-lib/ragg') pak
ragg provides drop-in replacements for the png, jpeg, and tiff graphic devices provided by default from the grDevices packages and can both produce png, jpeg and tiff files. Notable features, that sets itself apart from the build-in devices, includes:
You can use it like any other device. The main functions are
agg_png()
, agg_jpeg()
and
agg_tiff()
, all of which have arguments that closely match
those of the png()
, jpeg()
and
tiff()
functions, so switching over should be easy.
library(ragg)
library(ggplot2)
<- knitr::fig_path('.png')
file
<- tolower(Sys.info()[['sysname']]) == 'linux'
on_linux <- if (on_linux) 'URW Chancery L' else 'Papyrus'
fancy_font
agg_png(file, width = 1000, height = 500, res = 144)
ggplot(mtcars) +
geom_point(aes(mpg, disp, colour = hp)) +
labs(title = 'System fonts — Oh My! 😱') +
theme(text = element_text(family = fancy_font))
invisible(dev.off())
::include_graphics(file) knitr
Further, it provides an agg_capture()
device that lets
you access the device buffer directly from your R session.
<- agg_capture(width = 1000, height = 500, res = 144)
cap plot(1:10, 1:10)
<- cap()
scatter invisible(dev.off())
# Remove margins from raster plotting
par(mai = c(0, 0, 0, 0))
plot(as.raster(scatter))
knitr supports png output from ragg by setting
dev = "ragg_png"
in the chunk settings or globally with
knitr::opts_chunk$set(dev = "ragg_png")
.
ragg can be used as the graphic back-end to the RStudio device (for RStudio >= 1.4) by choosing AGG as the backend in the graphics pane in general options (see screenshot)
Please note that the ‘ragg’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.