code: def threeD_gridplot(nodes, **kwargs):
      
      from mpl_toolkits.mplot3d import Axes3D  # noqa: F401
      import matplotlib.pyplot as plt
      lats = []
      longs = []
      depths = []
      for node in nodes:
          lats.append(float(node[0]))
          longs.append(float(node[1]))
          depths.append(float(node[2]))
      fig = plt.figure()
      ax = fig.add_subplot(111, projection='3d')
      ax.scatter(lats, longs, depths)
      ax.set_ylabel("Latitude (deg)")
      ax.set_xlabel("Longitude (deg)")
      ax.set_zlabel("Depth(km)")
      ax.get_xaxis().get_major_formatter().set_scientific(False)
      ax.get_yaxis().get_major_formatter().set_scientific(False)
      fig = _finalise_figure(fig=fig, **kwargs)  # pragma: no cover
      return fig
docs: 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)