class_docstr: Grandparent class for plotting
  modes. Serves as interface for
  registration, lookup, and init
  of modes.
  
  To create a new plot mode,
  inherit from PlotModeBase
  or one of its children, such
  as PlotSurface or PlotCurve.
class_docstr_tok: ["Grandparent","class","for","plotting","modes",".","Serves","as","interface","for","registration",",","lookup",",","and","init","of","modes",".","To","create","a","new","plot","mode",",","inherit","from","PlotModeBase","or","one","of","its","children",",","such","as","PlotSurface","or","PlotCurve","."]
code: def _get_aliased_mode(alias, i, d, i_vars=-1):
      if i_vars == -1:
          i_vars = i
      if alias not in PlotMode._mode_alias_list:
          raise ValueError(
              ("Couldn't find a mode called" " %s. Known modes: %s.")
              % (alias, ", ".join(PlotMode._mode_alias_list))
          )
      try:
          return PlotMode._mode_map[d][i][alias]
      except TypeError:
          # Keep looking for modes in higher i var counts
          # which support the given d var count and alias
          # until we reach the max i_var count.
          if i < PlotMode._i_var_max:
              return PlotMode._get_aliased_mode(alias, i + 1, d, i_vars)
          else:
              raise ValueError(
                  (
                      "Couldn't find a %s mode "
                      "for %i independent and %i "
                      "dependent variables."
                  )
                  % (alias, i_vars, d)
              )
  
imports: from .plot_interval import PlotInterval
  from .plot_object import PlotObject
  from .util import parse_option_string
  from sympy.core.symbol import Symbol
  from sympy.core.sympify import sympify
  from sympy.geometry.entity import GeometryEntity
  from sympy.utilities.iterables import is_sequence
label_desc: Use image node_id 5 for calling the PlotMode obj's underlying member method code with example usage: obj._get_aliased_mode(alias, i, d, i_vars) and returns: PlotMode, PlotMode