ribs.visualize.proximity_archive_plot¶
-
ribs.visualize.proximity_archive_plot(archive: ProximityArchive, ax: Axes | None =
None, *, df: DataFrame | ArchiveDataFrame | None =None, transpose_measures: bool =False, cmap: str | Sequence[matplotlib.typing.ColorType] | Colormap ='magma', aspect: 'auto' | 'equal' | float | None =None, ms: float | None =None, lower_bounds: Sequence[float] | None =None, upper_bounds: Sequence[float] | None =None, vmin: float | None =None, vmax: float | None =None, cbar: 'auto' | None | Axes ='auto', cbar_kwargs: dict | None =None, rasterized: bool =False) None[source]¶ Plots scatterplot of a
ProximityArchivewith 2D measure space.Each marker in the scatterplot is an elite, and its color represents the objective value (objective values default to 0 in the
ProximityArchive).Examples
Single color plot for diversity optimization settings.
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from ribs.archives import ProximityArchive >>> from ribs.visualize import proximity_archive_plot >>> archive = ProximityArchive(solution_dim=2, ... measure_dim=2, ... k_neighbors=5, ... novelty_threshold=0.1, ... seed=42) >>> for _ in range(10): ... x = np.random.uniform(-1, 1, 100) ... y = np.random.uniform(-1, 1, 100) ... archive.add(solution=np.stack((x, y), axis=1), ... # Objectives default to 0 in this case. ... objective=None, ... measures=np.stack((x, y), axis=1)) >>> # Plot the archive. >>> plt.figure(figsize=(6, 6)) >>> # Notice that the colormap is just a single RGB array, and the ... # colorbar is removed since it is just one color. >>> proximity_archive_plot(archive, cmap=[[0.5, 0.5, 0.5]], ... cbar=None) >>> plt.xlabel("x coords") >>> plt.ylabel("y coords") >>> plt.show()
Plot where the objective has been recorded while using the archive.
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from ribs.archives import ProximityArchive >>> from ribs.visualize import proximity_archive_plot >>> archive = ProximityArchive(solution_dim=2, ... measure_dim=2, ... k_neighbors=5, ... novelty_threshold=0.1, ... seed=42) >>> for _ in range(10): ... x = np.random.uniform(-1, 1, 100) ... y = np.random.uniform(-1, 1, 100) ... archive.add(solution=np.stack((x, y), axis=1), ... objective=-(x**2 + y**2), ... measures=np.stack((x, y), axis=1)) >>> # Plot the archive. >>> plt.figure(figsize=(8, 6)) >>> proximity_archive_plot(archive) >>> plt.title("Negative sphere function") >>> plt.xlabel("x coords") >>> plt.ylabel("y coords") >>> plt.show()
- Parameters:¶
- archive: ProximityArchive¶
A 2D
ProximityArchive.- ax: Axes | None =
None¶ Axes on which to make the plot. If
None, the current axis will be used.- df: DataFrame | ArchiveDataFrame | None =
None¶ If provided, we will plot data from this argument instead of the data currently in the archive. This data can be obtained by, for instance, calling
ribs.archives.ArchiveBase.data()withreturn_type="pandas"and modifying the resultingArchiveDataFrame. Note that, at a minimum, the data must contain columns for index, objective, and measures. To display a custom metric, replace the “objective” column.- transpose_measures: bool =
False¶ 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 | Sequence[matplotlib.typing.ColorType] | Colormap =
'magma'¶ The colormap to use when plotting intensity. Either the name of a
Colormap, a list of Matplotlib color specifications (e.g., an \(N \times 3\) or \(N \times 4\) array – seeListedColormap), or aColormapobject.- aspect: 'auto' | 'equal' | float | None =
None¶ The aspect ratio of the heatmap (i.e. height/width). Defaults to
'auto'for 2D and0.5for 1D.'equal'is the same asaspect=1. Seematplotlib.axes.Axes.set_aspect()for more info.- ms: float | None =
None¶ Marker size for the solutions.
- lower_bounds: Sequence[float] | None =
None¶ Lower bounds of the measure space for the plot. Defaults to the minimum measure value along each dimension of the archive, minus 0.01.
- upper_bounds: Sequence[float] | None =
None¶ Upper bounds of the measure space for the plot. Defaults to the maximum measure value along each dimension of the archive, plus 0.01.
- vmin: float | None =
None¶ Minimum objective value to use in the plot. If
None, the minimum objective value in the archive is used.- vmax: float | None =
None¶ Maximum objective value to use in the plot. If
None, the maximum objective value in the archive is used.- cbar: 'auto' | None | Axes =
'auto'¶ By default, this is set to
'auto'which displays the colorbar on the archive’s currentAxes. IfNone, then colorbar is not displayed. If this is anAxes, displays the colorbar on the specified Axes.- cbar_kwargs: dict | None =
None¶ Additional kwargs to pass to
colorbar().- rasterized: bool =
False¶ Whether to rasterize the heatmap. This can be useful for saving to a vector format like PDF. Essentially, only the heatmap will be converted to a raster graphic so that the archive cells will not have to be individually rendered. Meanwhile, the surrounding axes, particularly text labels, will remain in vector format.
- Raises:¶
ValueError – The archive is not 2D.