code: def get_wireframe(viewer, x, y, z, **kwargs):
      
      # TODO: something like this would make a great utility function
      # for ginga
      n, m = x.shape
      objs = []
      for i in range(n):
          pts = np.asarray([(x[i][j], y[i][j], z[i][j])
                            for j in range(m)])
          objs.append(viewer.dc.Path(pts, **kwargs))
  
      for j in range(m):
          pts = np.asarray([(x[i][j], y[i][j], z[i][j])
                            for i in range(n)])
          objs.append(viewer.dc.Path(pts, **kwargs))
  
      return viewer.dc.CompoundObject(*objs)
docs: Produce a compound object of paths implementing a wireframe.
      x, y, z are expected to be 2D arrays of points making up the mesh.