ribs.visualize.sliding_boundaries_archive_heatmap(archive, ax=None, *, transpose_measures=False, cmap='magma', aspect='auto', ms=None, boundary_lw=0, vmin=None, vmax=None, cbar='auto', cbar_kwargs=None)[source]

Plots heatmap of a SlidingBoundariesArchive with 2D measure space.

Since the boundaries of ribs.archives.SlidingBoundariesArchive are dynamic, we plot the heatmap as a scatter plot, in which each marker is an elite and its color represents the objective value. Boundaries can optionally be drawn by setting boundary_lw to a positive value.


>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from ribs.archives import SlidingBoundariesArchive
>>> from ribs.visualize import sliding_boundaries_archive_heatmap
>>> archive = SlidingBoundariesArchive(solution_dim=2,
...                                    dims=[10, 20],
...                                    ranges=[(-1, 1), (-1, 1)],
...                                    seed=42)
>>> # Populate the archive with the negative sphere function.
>>> rng = np.random.default_rng(seed=10)
>>> coords = np.clip(rng.standard_normal((1000, 2)), -1.5, 1.5)
>>> archive.add(solution_batch=coords,
...             objective_batch=-np.sum(coords**2, axis=1),
...             measures_batch=coords)
>>> # Plot heatmaps of the archive.
>>> fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16,6))
>>> fig.suptitle("Negative sphere function")
>>> sliding_boundaries_archive_heatmap(archive, ax=ax1,
...                                    boundary_lw=0.5)
>>> sliding_boundaries_archive_heatmap(archive, ax=ax2)
>>> ax1.set_title("With boundaries")
>>> ax2.set_title("Without boundaries")
>>> ax1.set(xlabel='x coords', ylabel='y coords')
>>> ax2.set(xlabel='x coords', ylabel='y coords')
>>> plt.show()
  • archive (SlidingBoundariesArchive) – A 2D SlidingBoundariesArchive.

  • ax (matplotlib.axes.Axes) – Axes on which to plot the heatmap. If None, the current axis will be used.

  • transpose_measures (bool) – By default, the first measure in the archive will appear along the x-axis, and the second will be along the y-axis. To switch this behavior (i.e. to transpose the axes), set this to True.

  • cmap (str, list, matplotlib.colors.Colormap) – Colormap to use when plotting intensity. Either the name of a Colormap, a list of RGB or RGBA colors (i.e. an \(N \times 3\) or \(N \times 4\) array), or a Colormap object.

  • aspect ('auto', 'equal', float) – The aspect ratio of the heatmap (i.e. height/width). Defaults to 'auto'. 'equal' is the same as aspect=1.

  • ms (float) – Marker size for the solutions.

  • boundary_lw (float) – Line width when plotting the boundaries. Set to 0 to have no boundaries.

  • vmin (float) – Minimum objective value to use in the plot. If None, the minimum objective value in the archive is used.

  • vmax (float) – Maximum objective value to use in the plot. If None, the maximum objective value in the archive is used.

  • cbar ('auto', None, matplotlib.axes.Axes) – By default, this is set to 'auto' which displays the colorbar on the archive’s current Axes. If None, then colorbar is not displayed. If this is an Axes, displays the colorbar on the specified Axes.

  • cbar_kwargs (dict) – Additional kwargs to pass to colorbar().


ValueError – The archive is not 2D.