'Calculates the bounding rectangle in data coordinates for the axes ``x_axis`` and ``y_axis``.'

def data_rect_for_axes(self, x_axis=xBottom, y_axis=yLeft):

    if ((x_axis in self.axes) and (y_axis in self.axes)):
        (x_min, x_max) = self.bounds_for_axis(x_axis, try_auto_scale=True)
        (y_min, y_max) = self.bounds_for_axis(y_axis, try_auto_scale=True)
        if ((x_min or x_max) and (y_min or y_max)):
            r = QRectF(x_min, y_min, (x_max - x_min), (y_max - y_min))
            return r
    r = orangeqt.Plot.data_rect_for_axes(self, x_axis, y_axis)
    for (id, axis) in self.axes.items():
        if ((id not in CartesianAxes) and axis.data_line):
            r |= QRectF(axis.data_line.p1(), axis.data_line.p2())
    dx = (r.width() / 20.0)
    dy = (r.height() / 20.0)
    r.adjust((- dx), (- dy), dx, dy)
    return r
