def y_lower_limit(self, limit=None):
if limit is None:<EOL><INDENT>if self._y_lower_limit is None:<EOL><INDENT>if self.smallest_y() < <NUM_LIT:0>:<EOL><INDENT>if self.smallest_y() == self.largest_y():<EOL><INDENT>return int(self.smallest_y() - <NUM_LIT:1>)<EOL><DEDENT>else:<EOL><INDENT>return self.smallest_y()<EOL><DEDENT><DEDENT>else:<EOL><INDENT>return <NUM_LIT:0><EOL><DEDENT><DEDENT>else:<EOL><INDENT>return self._y_lower_limit<EOL><DEDENT><DEDENT>else:<EOL><INDENT>if not is_numeric(limit):<EOL><INDENT>raise TypeError(<EOL>"<STR_LIT>" % str(limit)<EOL>)<EOL><DEDENT>if limit >= self.largest_y():<EOL><INDENT>raise ValueError(<EOL>"<STR_LIT>" % (<EOL>str(self.largest_y()), str(limit)<EOL>)<EOL>)<EOL><DEDENT>self._y_lower_limit = limit<EOL><DEDENT>
Returns or sets (if a value is provided) the value at which the
        y-axis should start. By default this is zero (unless there are negative
        values).

        :param limit: If given, the chart's y_lower_limit will be set to this.
        :raises ValueError: if you try to make the lower limit larger than the\
        upper limit.