Post-Process 'ggplot2' Plots with 'TikZ' Code Using Plot Coordinates

Annotation of 'ggplot2' plots with arbitrary 'TikZ' code, using absolute data or relative plot coordinates.


ggtikz

CRANstatus codecov R-CMD-check

ggtikz allows you to annotate plots created using ggplot2 with arbitrary TikZ code when rendering them with the tikzDevice. The annotations can be made using data coordinates, or with coordinates relative to a specified panel or the whole plot.

Plots with multiple panels (via facet_grid() or facet_wrap()) are supported.

For a few examples, see the examples vignette.

Installation

You can install the latest ggtikz release from CRAN with:

install.packages("ggtikz")

Or get the development version from GitHub:

# install.packages("devtools")
devtools::install_github("osthomas/ggtikz", ref = "devel")

Basic Usage

  1. Create a ggplot.
  2. Add annotations with ggtikz().
library(ggplot2)
library(ggtikz)

p <- ggplot(mtcars, aes(disp, mpg)) + geom_point() # 1.
## tikz("plot.tikz")
ggtikz(p,
    "\\fill[red] (0.5,0.5) circle (5mm);",
    xy = "panel", panelx = 1, panely = 1)
## dev.off()
## Render with LaTeX ...

Advanced Usage

  1. Create a ggplot.
  2. Create a ggtikz canvas from the plot with ggtikzCanvas().
  3. Create ggtikz annotations with ggtikzAnnotation().
  4. Add the annotations to the canvas.
  5. Draw the plot and the annotations using tikzDevice.
library(ggplot2)
library(ggtikz)

p <- ggplot(mtcars, aes(disp, mpg)) + geom_point()  # 1.
canvas <- ggtikzCanvas(p)                           # 2.
annot1 <- ggtikzAnnotation(                         # 3.
    "
    \\draw (0,0) -- (1,1);
    \\draw (0,1) -- (1,0);
    \\fill[red] (0.5,0.5) circle (5mm);
    ",
    xy = "panel", panelx = 1, panely = 1
)
annot2 <- ggtikzAnnotation(                          # 3.
    "\\draw[<-] (400,20) -- ++(0,3) node[at end, anchor=south] {(400,20)};",
    xy = "data", panelx = 1, panely = 1
)

## tikz("plot.tikz")
p                                                   # 4. + 5.
canvas + annot1 + annot2
## dev.off()
## Render with LaTeX ...

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("ggtikz")

0.1.5 by Oliver Thomas, a year ago


https://github.com/osthomas/ggtikz


Report a bug at https://github.com/osthomas/ggtikz/issues


Browse source code at https://github.com/cran/ggtikz


Authors: Oliver Thomas [aut, cre]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports ggplot2, grid, stringr, tikzDevice

Suggests covr, knitr, magick, rmarkdown, testthat, tinytex


See at CRAN