def threeD_gridplot(nodes, **kwargs):
from mpl_toolkits.mplot3d import Axes3D  <EOL>import matplotlib.pyplot as plt<EOL>lats = []<EOL>longs = []<EOL>depths = []<EOL>for node in nodes:<EOL><INDENT>lats.append(float(node[<NUM_LIT:0>]))<EOL>longs.append(float(node[<NUM_LIT:1>]))<EOL>depths.append(float(node[<NUM_LIT:2>]))<EOL><DEDENT>fig = plt.figure()<EOL>ax = fig.add_subplot(<NUM_LIT>, projection='<STR_LIT>')<EOL>ax.scatter(lats, longs, depths)<EOL>ax.set_ylabel("<STR_LIT>")<EOL>ax.set_xlabel("<STR_LIT>")<EOL>ax.set_zlabel("<STR_LIT>")<EOL>ax.get_xaxis().get_major_formatter().set_scientific(False)<EOL>ax.get_yaxis().get_major_formatter().set_scientific(False)<EOL>fig = _finalise_figure(fig=fig, **kwargs)  <EOL>return fig<EOL>
Plot in a series of grid points in 3D.

    :type nodes: list
    :param nodes: List of tuples of the form (lat, long, depth)

    :returns: :class:`matplotlib.figure.Figure`

    .. rubric:: Example

    >>> from eqcorrscan.utils.plotting import threeD_gridplot
    >>> nodes = [(-43.5, 170.4, 4), (-43.3, 170.8, 12), (-43.4, 170.3, 8)]
    >>> threeD_gridplot(nodes=nodes)  # doctest: +SKIP

    .. plot::

        from eqcorrscan.utils.plotting import threeD_gridplot
        nodes = [(-43.5, 170.4, 4), (-43.3, 170.8, 12), (-43.4, 170.3, 8)]
        threeD_gridplot(nodes=nodes)