def METHOD_NAME(
    self,
    screen_pt,
    threshold=2.0,
    outside_returns_none=True,
    index_only=True,
):
    """Maps a screen space point to an index into the plot's index array(s)."""
    screen_points = self._cached_screen_pts
    if len(screen_points) == 0:
        return None
    data_pt = self.map_data(screen_pt)
    if (
        (data_pt < self.index_mapper.range.low)
        or (data_pt > self.index_mapper.range.high)
    ) and outside_returns_none:
        return None
    if self._cached_data_pts_sorted is None:
        self._cached_data_argsort = np.argsort(self._cached_data)
        self._cached_data_pts_sorted = self._cached_data[
            self._cached_data_argsort
        ]
    data = self._cached_data_pts_sorted
    try:
        ndx = reverse_map_1d(data, data_pt, "ascending")
    except IndexError:
        if outside_returns_none:
            return None
        else:
            if data_pt < data[0]:
                return 0
            else:
                return len(data) - 1
    orig_ndx = self._cached_data_argsort[ndx]
    if threshold == 0.0:
        return orig_ndx
    sx, sy = screen_points[orig_ndx]
    if (
        sqrt((screen_pt[0] - sx) ** 2 + (screen_pt[1] - sy) ** 2)
        <= threshold
    ):
        return orig_ndx
    else:
        return None