49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
"""valley2.py
|
|
~~~~~~~~~~~~~
|
|
|
|
Plots a function of two variables to minimize. The function is a
|
|
fairly generic valley function.
|
|
|
|
Note that this is a duplicate of valley.py, but omits labels on the
|
|
axis. It's bad practice to duplicate in this way, but I had
|
|
considerable trouble getting matplotlib to update a graph in the way I
|
|
needed (adding or removing labels), so finally fell back on this as a
|
|
kludge solution.
|
|
|
|
"""
|
|
|
|
#### Libraries
|
|
# Third party libraries
|
|
from matplotlib.ticker import LinearLocator
|
|
# Note that axes3d is not explicitly used in the code, but is needed
|
|
# to register the 3d plot type correctly
|
|
from mpl_toolkits.mplot3d import axes3d
|
|
import matplotlib.pyplot as plt
|
|
import numpy
|
|
|
|
fig = plt.figure()
|
|
ax = fig.gca(projection='3d')
|
|
X = numpy.arange(-1, 1, 0.1)
|
|
Y = numpy.arange(-1, 1, 0.1)
|
|
X, Y = numpy.meshgrid(X, Y)
|
|
Z = X**2 + Y**2
|
|
|
|
colortuple = ('w', 'b')
|
|
colors = numpy.empty(X.shape, dtype=str)
|
|
for x in xrange(len(X)):
|
|
for y in xrange(len(Y)):
|
|
colors[x, y] = colortuple[(x + y) % 2]
|
|
|
|
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors,
|
|
linewidth=0)
|
|
|
|
ax.set_xlim3d(-1, 1)
|
|
ax.set_ylim3d(-1, 1)
|
|
ax.set_zlim3d(0, 2)
|
|
ax.w_xaxis.set_major_locator(LinearLocator(3))
|
|
ax.w_yaxis.set_major_locator(LinearLocator(3))
|
|
ax.w_zaxis.set_major_locator(LinearLocator(3))
|
|
ax.text(1.79, 0, 1.62, "$C$", fontsize=20)
|
|
|
|
plt.show()
|