Showing / Exporting figures

Jupyter, Juno

Figures are shown in svg format when evaluated in Jupyter or Juno. For this you need the pdf2svg software installed. If you want to show figures in png format (because perhaps the svg format is too large), you can use display("image/png", p) where p is the figure to show. In Juno, if you are on macOS and there are problems finding the latex executable, see this issue. Starting Atom from the terminal seems to work around it.

REPL

In the REPL, the figure will be exported to a pdf and attempted to be opened in the default pdf viewing program. If you wish to disable this, run PGFPlotsX.enable_interactive(false).

Exporting to files

Figures can be exported to files using

pgfsave(filename::AbstractString, figure; include_preamble::Bool = true, dpi = 150)

where the file extension of filename determines the file type (can be pdf, svg or tex, or the standalone tikz file extensions below), include_preamble sets if the preamble should be included in the output (only relevant for tex export) and dpi determines the dpi of the figure (only relevant for png export).

PGFPlotsX.pgfsaveFunction
save(filename, td; include_preamble, latex_engine, buildflags, dpi, showing_ide)

Save the argument (either TikzDocument, or some other type which is wrapped in one automatically, eg TikzPicture, Axis, or Plot) to filename, guessing the format from the file extension. Keywords specify options, some specific to some output formats.

pgfsave is an alias which is exported.

source

The standalone file extensions tikz, TIKZ, TikZ, pgf, PGF save LaTeX code for a tikzpicture environment without a preamble. You can \input them directly into a LaTeX document, or use the the tikzscale LaTeX package for using \includegraphics with possible size adjustments.

Hint

You can use the externalization feature of tikz/pgfplots, which caches generated pdf files for faster compilation of LaTeX documents. Use

\usepgfplotslibrary{external}
\tikzexternalize

in the preamble of the LaTeX document which uses these plots, see the manuals for more details.

Customizing the preamble

It is common to use a custom preamble to add user-defined macros or use different packages. There are a few ways to do this:

  • push! strings into the global variable PGFPlotsX.CUSTOM_PREAMBLE. Each string in that vector will be inserted in the preamble.

  • Modify the custom_preamble.tex file in the deps folder of the directory of the package. This file is directly spliced into the preamble of the output.

  • Define the environment variable PGFPLOTSX_PREAMBLE_PATH to a path pointing to a preamble file. The content of that will be inserted into the preamble.

Access to the class options of the standalone document class is possible with PGFPlotsX.CLASS_OPTIONS.

PGFPlotsX.CLASS_OPTIONSConstant

List of class options used in the preamble (default ["tikz"]).

By setting PGFPlotsX.CLASS_OPTIONS[1] = "varwidth"; push!(PGFPlotsX.CLASS_OPTIONS, "crop=false") the preamble will contain documentclass[varwidth,crop=false]{standalone}.

See https://www.ctan.org/pkg/standalone for a list of options.

source

Choosing the LaTeX engine used

Thee are three different choices for latex engines, PDFLATEX, LUALATEX and XELATEX. By default, LUALATEX is used if it was available during Pkg.build(). The active engine can be retrieved with the latexengine() function and be set with latexengine!(engine) where engine is one of the three previously mentioned engines (i.e. PGFPlotsX.PDFLATEX or PGFPlotsX.XELATEX).

Custom flags

PGFPlotsX.CUSTOM_FLAGSConstant

Custom flags to the engine can be used in the latex command by push!-ing them into the global variable CUSTOM_FLAGS.

source