def set_row_heights(self, pcts=None, amts=None, maxs=None, mins=None):
        """
        :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:
        """
        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
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
: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: