class_docstr: Create a new figure for plotting.
  
  A subclass of |Plot| that simplifies plot creation with default axes, grids,
  tools, etc.
  
  Figure objects have many glyph methods that can be used to draw
  vectorized graphical glyphs:
  
  .. hlist::
      :columns: 3
  
      * :func:`~bokeh.plotting.figure.annular_wedge`
      * :func:`~bokeh.plotting.figure.annulus`
      * :func:`~bokeh.plotting.figure.arc`
      * :func:`~bokeh.plotting.figure.asterisk`
      * :func:`~bokeh.plotting.figure.bezier`
      * :func:`~bokeh.plotting.figure.circle`
      * :func:`~bokeh.plotting.figure.circle_cross`
      * :func:`~bokeh.plotting.figure.circle_dot`
      * :func:`~bokeh.plotting.figure.circle_x`
      * :func:`~bokeh.plotting.figure.circle_y`
      * :func:`~bokeh.plotting.figure.cross`
      * :func:`~bokeh.plotting.figure.dash`
      * :func:`~bokeh.plotting.figure.diamond`
      * :func:`~bokeh.plotting.figure.diamond_cross`
      * :func:`~bokeh.plotting.figure.diamond_dot`
      * :func:`~bokeh.plotting.figure.dot`
      * :func:`~bokeh.plotting.figure.ellipse`
      * :func:`~bokeh.plotting.figure.harea`
      * :func:`~bokeh.plotting.figure.harea_step`
      * :func:`~bokeh.plotting.figure.hbar`
      * :func:`~bokeh.plotting.figure.hex`
      * :func:`~bokeh.plotting.figure.hex_tile`
      * :func:`~bokeh.plotting.figure.hstrip`
      * :func:`~bokeh.plotting.figure.hspan`
      * :func:`~bokeh.plotting.figure.image`
      * :func:`~bokeh.plotting.figure.image_rgba`
      * :func:`~bokeh.plotting.figure.image_url`
      * :func:`~bokeh.plotting.figure.inverted_triangle`
      * :func:`~bokeh.plotting.figure.line`
      * :func:`~bokeh.plotting.figure.multi_line`
      * :func:`~bokeh.plotting.figure.multi_polygons`
      * :func:`~bokeh.plotting.figure.patch`
      * :func:`~bokeh.plotting.figure.patches`
      * :func:`~bokeh.plotting.figure.plus`
      * :func:`~bokeh.plotting.figure.quad`
      * :func:`~bokeh.plotting.figure.quadratic`
      * :func:`~bokeh.plotting.figure.ray`
      * :func:`~bokeh.plotting.figure.rect`
      * :func:`~bokeh.plotting.figure.segment`
      * :func:`~bokeh.plotting.figure.square`
      * :func:`~bokeh.plotting.figure.square_cross`
      * :func:`~bokeh.plotting.figure.square_dot`
      * :func:`~bokeh.plotting.figure.square_pin`
      * :func:`~bokeh.plotting.figure.square_x`
      * :func:`~bokeh.plotting.figure.star`
      * :func:`~bokeh.plotting.figure.star_dot`
      * :func:`~bokeh.plotting.figure.step`
      * :func:`~bokeh.plotting.figure.text`
      * :func:`~bokeh.plotting.figure.triangle`
      * :func:`~bokeh.plotting.figure.triangle_dot`
      * :func:`~bokeh.plotting.figure.triangle_pin`
      * :func:`~bokeh.plotting.figure.varea`
      * :func:`~bokeh.plotting.figure.varea_step`
      * :func:`~bokeh.plotting.figure.vbar`
      * :func:`~bokeh.plotting.figure.vstrip`
      * :func:`~bokeh.plotting.figure.vspan`
      * :func:`~bokeh.plotting.figure.wedge`
      * :func:`~bokeh.plotting.figure.x`
      * :func:`~bokeh.plotting.figure.y`
  
  There is a scatter function that can be parameterized by marker type:
  
  * :func:`~bokeh.plotting.figure.scatter`
  
  There are also specialized methods for stacking bars:
  
  * bars: :func:`~bokeh.plotting.figure.hbar_stack`, :func:`~bokeh.plotting.figure.vbar_stack`
  * lines: :func:`~bokeh.plotting.figure.hline_stack`, :func:`~bokeh.plotting.figure.vline_stack`
  * areas: :func:`~bokeh.plotting.figure.harea_stack`, :func:`~bokeh.plotting.figure.varea_stack`
  
  As well as one specialized method for making simple hexbin plots:
  
  * :func:`~bokeh.plotting.figure.hexbin`
  
  In addition to all the ``figure`` property attributes, the following
  options are also accepted:
  
  .. bokeh-options:: FigureOptions
      :module: bokeh.plotting._figure
docstr: Generate multiple ``HBar`` renderers for levels stacked left to right.
  
  Args:
      stackers (seq[str]) : a list of data source field names to stack
          successively for ``left`` and ``right`` bar coordinates.
  
          Additionally, the ``name`` of the renderer will be set to
          the value of each successive stacker (this is useful with the
          special hover variable ``$name``)
  
  Any additional keyword arguments are passed to each call to ``hbar``.
  If a keyword value is a list or tuple, then each call will get one
  value from the sequence.
  
  Returns:
      list[GlyphRenderer]
  
  Examples:
  
      Assuming a ``ColumnDataSource`` named ``source`` with columns
      *2016* and *2017*, then the following call to ``hbar_stack`` will
      will create two ``HBar`` renderers that stack:
  
      .. code-block:: python
  
          p.hbar_stack(['2016', '2017'], y=10, width=0.9, color=['blue', 'red'], source=source)
  
      This is equivalent to the following two separate calls:
  
      .. code-block:: python
  
          p.hbar(bottom=stack(),       top=stack('2016'),         y=10, width=0.9, color='blue', source=source, name='2016')
          p.hbar(bottom=stack('2016'), top=stack('2016', '2017'), y=10, width=0.9, color='red',  source=source, name='2017')
code: def hbar_stack(self, stackers, **kw):
      """Generate multiple ``HBar`` renderers for levels stacked left to right.
  
      Args:
          stackers (seq[str]) : a list of data source field names to stack
              successively for ``left`` and ``right`` bar coordinates.
  
              Additionally, the ``name`` of the renderer will be set to
              the value of each successive stacker (this is useful with the
              special hover variable ``$name``)
  
      Any additional keyword arguments are passed to each call to ``hbar``.
      If a keyword value is a list or tuple, then each call will get one
      value from the sequence.
  
      Returns:
          list[GlyphRenderer]
  
      Examples:
  
          Assuming a ``ColumnDataSource`` named ``source`` with columns
          *2016* and *2017*, then the following call to ``hbar_stack`` will
          will create two ``HBar`` renderers that stack:
  
          .. code-block:: python
  
              p.hbar_stack(['2016', '2017'], y=10, width=0.9, color=['blue', 'red'], source=source)
  
          This is equivalent to the following two separate calls:
  
          .. code-block:: python
  
              p.hbar(bottom=stack(),       top=stack('2016'),         y=10, width=0.9, color='blue', source=source, name='2016')
              p.hbar(bottom=stack('2016'), top=stack('2016', '2017'), y=10, width=0.9, color='red',  source=source, name='2017')
  
      """
      result = []
      for kw in double_stack(stackers, "left", "right", **kw):
          result.append(self.hbar(**kw))
      return result
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING
  import logging
  import numpy
  from ..core.enums import HorizontalLocation, MarkerType, VerticalLocation
  from ..core.properties import Auto, Datetime, Either, Enum, Float, Instance, InstanceDefault, Int, List, Nullable, Object, Seq, String, TextLike, TimeDelta, Tuple
  from ..models import ColumnDataSource, CoordinateMapping, DataRange1d, GraphRenderer, LayoutProvider, Plot, Range, Scale, Tool
  from ..models.dom import Template
  from ..models.tools import Drag, GestureTool, InspectTool, Scroll, Tap
  from ..transform import linear_cmap
  from ..util.options import Options
  from ._graph import get_graph_kwargs
  from ._plot import get_range, get_scale, process_axis_and_grid
  from ._stack import double_stack, single_stack
  from ._tools import process_active_tools, process_tools_arg
  from .contour import ContourRenderer, from_contour
  from .glyph_api import _MARKER_SHORTCUTS, GlyphAPI
label_desc: Use image node_id 7 for calling the figure obj's underlying member method code with example usage: obj.hbar_stack(stackers) and returns: result