def __init__(self):
        # map widgets to widgets it depends on
        self.deps = collections.defaultdict(list)
        # list of axes
        self.axes = []
        # list of plotters associated with each axis
        self.axis_plotter_map = collections.defaultdict(list)
        # ranges for each axis
        self.ranges = {}
        # pairs of dependent widgets
        self.pairs = []

        # track axes which map from one axis to another
        self.axis_to_axislinked = {}
        self.axislinked_to_axis = {}