code: def tile(self, ncols, nrows):
          
          dx = (self.width/ncols).to('px').value
          dy = (self.height/nrows).to('px').value
          ix, iy = 0, 0
          for el in self:
              el.move(dx*ix, dy*iy)
              ix += 1
              if ix >= ncols:
                  ix = 0
                  iy += 1
              if iy > nrows:
                  break
          return self
docs: Automatically tile the panels of the figure.
  
          This will re-arranged all elements of the figure (first in the
          hierarchy) so that they will uniformly cover the figure area.
  
          Parameters
          ----------
          ncols, nrows : type
              The number of columns and rows to arange the elements into.
  
  
          Notes
          -----
          ncols * nrows must be larger or equal to number of
          elements, otherwise some elements will go outside the figure borders.