code: def _get_coords(self, obj):
          xdim, ydim = obj.dimensions(label=True)[:2]
          xcoords = obj.dimension_values(xdim, False)
          ycoords = obj.dimension_values(ydim, False)
          grouped = obj.groupby(xdim, container_type=OrderedDict,
                                group_type=Dataset).values()
          orderings = OrderedDict()
          sort = True
          for group in grouped:
              vals = group.dimension_values(ydim, False)
              if len(vals) == 1:
                  orderings[vals[0]] = [vals[0]]
              else:
                  for i in range(len(vals)-1):
                      p1, p2 = vals[i:i+2]
                      orderings[p1] = [p2]
              if sort:
                  if vals.dtype.kind in ('i', 'f'):
                      sort = (np.diff(vals)>=0).all()
                  else:
                      sort = np.array_equal(np.sort(vals), vals)
          if sort or one_to_one(orderings, ycoords):
              ycoords = np.sort(ycoords)
          elif not is_cyclic(orderings):
              coords = list(itertools.chain(*sort_topologically(orderings)))
              ycoords = coords if len(coords) == len(ycoords) else np.sort(ycoords)
          return xcoords, ycoords