Pareto-related recipes to be used with Plots.jl
Author svrama
4 Stars
Updated Last
5 Months Ago
Started In
July 2020


Documentation Build Status
Stable Dev Build Status Build Status Build Status Coverage Coverage


ParetoRecipes generates Pareto plots from a set of points in a multiobjective optimization problem using Plots.jl. A Pareto plot consists of the set of points together with a Pareto front (alternatively, Pareto frontier or Pareto set). Colloquially, we will refer to such plots as Paretos.

ParetoRecipes does not focus on the multiobjective optimization itself, or even on breadth of exact and approximate algorithms to trace out Pareto fronts for optimization problems. You can find such features and more in the MultiJuMP package.

Currently, ParetoRecipes only supports two-dimensional (2D) Paretos with an extremely inefficient brute-force algorithm for finding the Pareto front.


We plot a simple Pareto for a minimization problem with four points: (1, 0), (0, 1), (1, 1), and (2, 2). The Pareto front consists of the first two points, (1, 0) and (0, 1).

using ParetoRecipes
using Plots

pareto([[1, 0], [0, 1], [1, 1], [2, 2]])

Pareto with four points using PGFPlotsX backend

Implementation: Recipes

Thomas Breloff (@tbreloff) created the lightweight RecipesBase package that inspired the design of ParetoRecipes.

ParetoRecipes offers a set of recipes. Recipes abstract away the dependencies on plotting libraries like Plots.jl. Each recipe is a @recipe macro from RecipesBase. There are different kinds of recipes. The @recipe for a Pareto plot in ParetoRecipes is a series recipe (@series) that composes two plots: a scatter plot (:scatter) and a line plot (:path).

The GraphRecipes.jl repo has many more examples of the power of series recipes.


ParetoRecipes does not currently support other concepts named after the economist Vilfredo Pareto:


This work was supported in part by the United States government under the DARPA DSSoC program.

Used By Packages

No packages found.