Skip to main content
Have a personal or library account? Click to login
Plots.jl – A User Extendable Plotting API for the Julia Programming Language Cover

Plots.jl – A User Extendable Plotting API for the Julia Programming Language

Open Access
|Feb 2023

Abstract

There are many excellent plotting libraries. Each excels at a specific use case: one is particularly suited for creating printable 2D figures for publication, another for generating interactive 3D graphics, while a third may have excellent LATEX integration or be ideal for creating dashboards on the web. The aim of Plots.jl is to enable the user to use the same syntax to interact with a range of different plotting libraries, making it possible to change the library that does the actual plotting (the backend) without needing to touch the code that creates the content – and without having to learn multiple application programming interfaces (API). This is achieved by separating the specification of the plot from the implementation of the graphical backend. This plot specification is extendable by a recipe system that allows package authors and users to create new types of plots, as well as to specify how to plot any type of object (e.g. a statistical model, a map, a phylogenetic tree or the solution to a system of differential equations) without depending on the Plots.jl package. This design supports a modular ecosystem structure for plotting and yields a high code reuse potential across the entire Julia package ecosystem. Plots.jl is publicly available at https://github.com/JuliaPlots/Plots.jl.

DOI: https://doi.org/10.5334/jors.431 | Journal eISSN: 2049-9647
Language: English
Submitted on: Jun 1, 2022
Accepted on: Jan 25, 2023
Published on: Feb 14, 2023
Published by: Ubiquity Press
In partnership with: Paradigm Publishing Services
Publication frequency: 1 issue per year

© 2023 Simon Christ, Daniel Schwabeneder, Christopher Rackauckas, Michael Krabbe Borregaard, Thomas Breloff, published by Ubiquity Press
This work is licensed under the Creative Commons Attribution 4.0 License.