def METHOD_NAME(self, gc, view_bounds=None, mode="normal"):
    self._gather_points()
    if len(self._cached_data_pts) == 0:
        return
    index = self.index_mapper.map_screen(self._cached_data_pts[0])
    if len(index) == 0:
        return
    vals = []
    for v in self._cached_data_pts[1:]:
        if v is None:
            vals.append(None)
        else:
            vals.append(self.value_mapper.map_screen(v))
    # Compute lefts and rights from self.index, which represents bin
    # centers.
    if len(index) == 1:
        width = 5.0
    else:
        width = (index[1:] - index[:-1]).min() / 2.5
    left = index - width
    right = index + width
    with gc:
        gc.clip_to_rect(self.x, self.y, self.width, self.height)
        self._render(gc, left, right, *vals)