class_docstr: A class to create 3 linked axes for plotting orthogonal
  cuts of 3D maps.
  
  Attributes
  ----------
  
  axes: dictionary of axes
      The 3 axes used to plot each view.
  frame_axes: axes
      The axes framing the whole set of views.
  
  Notes
  -----
  
  The extent of the different axes are adjusted to fit the data
  best in the viewing area.
class_docstr_tok: ["A","class","to","create","3","linked","axes","for","plotting","orthogonal","cuts","of","3D","maps",".","Attributes","--","--","--","--","--","axes",":","dictionary","of","axes","The","3","axes","used","to","plot","each","view",".","frame_axes",":","axes","The","axes","framing","the","whole","set","of","views",".","Notes","--","--","-","The","extent","of","the","different","axes","are","adjusted","to","fit","the","data","best","in","the","viewing","area","."]
docstr: The locator function used by matplotlib to position axes.
  Here we put the logic used to adjust the size of the axes.
docstr_tok: ["The","locator","function","used","by","matplotlib","to","position","axes",".","Here","we","put","the","logic","used","to","adjust","the","size","of","the","axes","."]
code: def _locator(self, axes, renderer):
      """The locator function used by matplotlib to position axes.
      Here we put the logic used to adjust the size of the axes.
      """
      x0, y0, x1, y1 = self.rect
      width_dict = {}
      cut_ax_dict = self.axes
      x_ax = cut_ax_dict["x"]
      y_ax = cut_ax_dict["y"]
      z_ax = cut_ax_dict["z"]
      for cut_ax in cut_ax_dict.values():
          bounds = cut_ax.get_object_bounds()
          if not bounds:
              # This happens if the call to _map_show was not
              # successful. As it happens asyncroniously (during a
              # refresh of the figure) we capture the problem and
              # ignore it: it only adds a non informative traceback
              bounds = [0, 1, 0, 1]
          xmin, xmax, ymin, ymax = bounds
          width_dict[cut_ax.ax] = xmax - xmin
      total_width = float(sum(width_dict.values()))
      for ax, width in width_dict.items():
          width_dict[ax] = width / total_width * (x1 - x0)
      left_dict = {}
      left_dict[y_ax.ax] = x0
      left_dict[x_ax.ax] = x0 + width_dict[y_ax.ax]
      left_dict[z_ax.ax] = (
          x0 + width_dict[x_ax.ax] + width_dict[y_ax.ax]
      )
      return transforms.Bbox(
          [
              [left_dict[axes], y0],
              [left_dict[axes] + width_dict[axes], y1],
          ]
      )
  
imports: import matplotlib
  import matplotlib.pyplot
  import numpy
  from matplotlib import transforms
  from nipy.utils import is_iterable
  from ..datasets import VolumeImg
  from .None import cm
  from .coord_tools import coord_transform, find_cut_coords, get_bounds, get_mask_bounds
  from .edge_detect import _edge_map
label_desc: Use image node_id 3 for calling the OrthoSlicer obj's underlying member method code with example usage: obj._locator(axes, renderer) and returns: transforms