Petal Diagram

Contents

Petal Diagram#

Also, it might be interesting to compare one solution with another. Here, a visual of a single solution regarding its trade-offs.

Let us visualize some test data:

[1]:
import numpy as np

np.random.seed(1234)
F = np.random.random((1, 6))
print(F)
[[0.19151945 0.62210877 0.43772774 0.78535858 0.77997581 0.27259261]]

A simple petal plot can be created by:

[2]:
from pymoo.visualization.petal import Petal

Petal(bounds=[0, 1]).add(F).show()
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
[2]:
<pymoo.visualization.petal.Petal at 0x1054907c0>
../_images/visualization_petal_5_2.png

If you prefer to visualize smaller values with a larger area, set reverse=True:

[3]:
Petal(bounds=[0, 1], reverse=True).add(F).show()
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
[3]:
<pymoo.visualization.petal.Petal at 0x1074ee680>
../_images/visualization_petal_7_2.png
[4]:
plot = Petal(bounds=[0, 1],
             cmap="tab20",
             labels=["profit", "cost", "sustainability", "environment", "satisfaction", "time"],
             title=("Solution A", {'pad': 20}))
plot.add(F)
plot.show()
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
[4]:
<pymoo.visualization.petal.Petal at 0x1075dff10>
../_images/visualization_petal_8_2.png

Each add will plot solutions in a row. Each entry represents a column. Different solutions can be easily compared.

[5]:
F = np.random.random((6, 6))
plot = Petal(bounds=[0, 1], title=["Solution %s" % t for t in ["A", "B", "C", "D", "E", "F"]])
plot.add(F[:3])
plot.add(F[3:])
plot.show()
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
Cannot plot a one dimensional array.
[5]:
<pymoo.visualization.petal.Petal at 0x1074eefb0>
../_images/visualization_petal_10_2.png

API#

class pymoo.visualization.petal.Petal(self, bounds=None, **kwargs)[source]

Petal Diagram

Parameters:
boundstuple

The boundaries for each objective. Necessary to be provided for this plot!

axis_styledict

Most of the plots consists of an axis. The style of the axis, e.g. color, alpha, …, can be changed to further modify the plot appealing.

reversebool

Default false. Otherwise, larger area means smaller value.

Other Parameters:
figsizetuple

The figure size. Default (figsize=(8, 6)). For some plots changing the size might have side effects for position.

titlestr or tuple

The title of the figure. If some additional kwargs should be provided this can be achieved by providing a tuple (“name”, {“key” : val}).

legendstr

Whether a legend should be shown or not.

tight_layoutbool

Whether tight layout should be used.

cmapcolormap

For some plots different kind of colors are used. The colormap can be changed to modify the color sequence for the plots.