Contour Plots#
2D contour visualizations of test functions.
Basic Contour Plot#
import os
from surfaces.test_functions.algebraic import RastriginFunction
from surfaces._visualize import plot_contour
func = RastriginFunction(n_dim=2)
# Create contour plot
fig = plot_contour(func, title="Rastrigin Contour")
if not os.environ.get("SURFACES_TESTING"):
fig.show()
Customizing Contours#
import os
from surfaces.test_functions.algebraic import RosenbrockFunction
from surfaces._visualize import plot_contour
func = RosenbrockFunction(n_dim=2)
fig = plot_contour(
func,
title="Rosenbrock Function",
resolution=200, # Higher resolution
)
if not os.environ.get("SURFACES_TESTING"):
fig.show()
Comparing Landscapes#
import os
from surfaces.test_functions.algebraic import (
SphereFunction,
RastriginFunction,
HimmelblausFunction,
)
from surfaces._visualize import plot_contour
functions = [
("Sphere (unimodal)", SphereFunction(n_dim=2)),
("Rastrigin (multimodal)", RastriginFunction(n_dim=2)),
("Himmelblau (4 minima)", HimmelblausFunction()),
]
for title, func in functions:
fig = plot_contour(func, title=title)
print(f"Created contour plot for {title}")
Matplotlib Backend#
"""Use matplotlib for publication-quality figures."""
import matplotlib.pyplot as plt
import numpy as np
from surfaces.test_functions.algebraic import BealeFunction
func = BealeFunction()
space = func.search_space
# Create grid
x = np.linspace(space['x0'].min(), space['x0'].max(), 100)
y = np.linspace(space['x1'].min(), space['x1'].max(), 100)
X, Y = np.meshgrid(x, y)
# Evaluate function
Z = np.zeros_like(X)
for i in range(X.shape[0]):
for j in range(X.shape[1]):
Z[i, j] = func({"x0": X[i, j], "x1": Y[i, j]})
# Plot
plt.figure(figsize=(8, 6))
plt.contourf(X, Y, Z, levels=50, cmap='viridis')
plt.colorbar(label='f(x, y)')
plt.xlabel('x0')
plt.ylabel('x1')
plt.title("Beale Function")
plt.close() # Don't display in test mode
print("Matplotlib contour plot created!")