# Line Plot with Marked Optima

Next, let’s draw the line plot again and this time draw a point where the known optima of the function is located.

This can be helpful when studying an optimization algorithm as we might want to see how close an optimization algorithm can get to the optima.

First, we must define the input for the optima, then evaluate that point to give the x-axis and y-axis values for plotting.

…

# define the known function optima

optima_x = 0.0

optima_y = objective(optima_x)

We can then plot this point with any shape or color we like, in this case, a red square.

…

# draw the function optima as a red square

pyplot.plot([optima_x], [optima_y], ‘s’, color=‘r’)

Tying this together, the complete example of creating a line plot of the function with the optima highlighted by a point is listed below.

# line plot of input vs result for a 1d objective function and show optima

from numpy import arange

from matplotlib import pyplot

# objective function

def objective(x):

return x**2.0

# define range for input

r_min, r_max = -5.0, 5.0

# sample input range uniformly at 0.1 increments

inputs = arange(r_min, r_max, 0.1)

# compute targets

results = objective(inputs)

# create a line plot of input vs result

pyplot.plot(inputs, results)

# define the known function optima

optima_x = 0.0

optima_y = objective(optima_x)

# draw the function optima as a red square

pyplot.plot([optima_x], [optima_y], ‘s’, color=‘r’)

# show the plot

pyplot.show()

Running the example creates the familiar line plot of the function, and this time, the optima of the function, e.g. the input that results in the minimum output of the function, is marked with a red square.

This is a very simple function and the red square for the optima is easy to see.

Sometimes the function might be more complex, with lots of hills and valleys, and we might want to make the optima more visible.

In this case, we can draw a vertical line across the whole plot.

…

# draw a vertical line at the optimal input

pyplot.axvline(x=optima_x, ls=’–’, color=‘red’)

Tying this together, the complete example is listed below.

# line plot of input vs result for a 1d objective function and show optima as line

from numpy import arange

from matplotlib import pyplot

# objective function

def objective(x):

return x**2.0

# define range for input

r_min, r_max = -5.0, 5.0

# sample input range uniformly at 0.1 increments

inputs = arange(r_min, r_max, 0.1)

# compute targets

results = objective(inputs)

# create a line plot of input vs result

pyplot.plot(inputs, results)

# define the known function optima

optima_x = 0.0

# draw a vertical line at the optimal input

pyplot.axvline(x=optima_x, ls=’–’, color=‘red’)

# show the plot

pyplot.show()

Running the example creates the same plot and this time draws a red line clearly marking the point in the input space that marks the optima.