code: def set_row_heights(self, pcts=None, amts=None, maxs=None, mins=None):
          
          for arr, attr in zip([pcts, amts, maxs, mins], ['weight', 'value', 'max', 'min']):
              if arr is not None:
                  if not np.isscalar(arr):
                      if len(arr) != len(self.formatted_values.index):
                          raise ValueError(
                              '%s: expected %s rows but got %s' % (attr, len(arr), len(self.formatted_values.index)))
                  self.rowattrs.ix[:, attr] = arr
          return self
docs: :param pcts: the percent of available height to use or ratio is also ok
          :param amts: (Array or scalar) the fixed height of the rows
          :param maxs: (Array or scalar) the maximum height of the rows (only use when pcts is used)
          :param mins: (Array or scalar) the minimum height of the rows (only used when pcts is used)
          :return: