docstr: Construct a new Axis object
  
  Parameters
  ----------
  arg
      dict of properties compatible with this constructor or
      an instance of
      :class:`plotly.graph_objs.indicator.gauge.Axis`
  dtick
      Sets the step in-between ticks on this axis. Use with
      `tick0`. Must be a positive number, or special strings
      available to "log" and "date" axes. If the axis `type`
      is "log", then ticks are set every 10^(n*dtick) where n
      is the tick number. For example, to set a tick mark at
      1, 10, 100, 1000, ... set dtick to 1. To set tick marks
      at 1, 100, 10000, ... set dtick to 2. To set tick marks
      at 1, 5, 25, 125, 625, 3125, ... set dtick to
      log_10(5), or 0.69897000433. "log" has several special
      values; "L<f>", where `f` is a positive number, gives
      ticks linearly spaced in value (but not position). For
      example `tick0` = 0.1, `dtick` = "L0.5" will put ticks
      at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus
      small digits between, use "D1" (all digits) or "D2"
      (only 2 and 5). `tick0` is ignored for "D1" and "D2".
      If the axis `type` is "date", then you must convert the
      time to milliseconds. For example, to set the interval
      between ticks to one day, set `dtick` to 86400000.0.
      "date" also has special values "M<n>" gives ticks
      spaced by a number of months. `n` must be a positive
      integer. To set ticks on the 15th of every third month,
      set `tick0` to "2000-01-15" and `dtick` to "M3". To set
      ticks every 4 years, set `dtick` to "M48"
  exponentformat
      Determines a formatting rule for the tick exponents.
      For example, consider the number 1,000,000,000. If
      "none", it appears as 1,000,000,000. If "e", 1e+9. If
      "E", 1E+9. If "power", 1x10^9 (with 9 in a super
      script). If "SI", 1G. If "B", 1B.
  minexponent
      Hide SI prefix for 10^n if |n| is below this number.
      This only has an effect when `tickformat` is "SI" or
      "B".
  nticks
      Specifies the maximum number of ticks for the
      particular axis. The actual number of ticks will be
      chosen automatically to be less than or equal to
      `nticks`. Has an effect only if `tickmode` is set to
      "auto".
  range
      Sets the range of this axis.
  separatethousands
      If "true", even 4-digit integers are separated
  showexponent
      If "all", all exponents are shown besides their
      significands. If "first", only the exponent of the
      first tick is shown. If "last", only the exponent of
      the last tick is shown. If "none", no exponents appear.
  showticklabels
      Determines whether or not the tick labels are drawn.
  showtickprefix
      If "all", all tick labels are displayed with a prefix.
      If "first", only the first tick is displayed with a
      prefix. If "last", only the last tick is displayed with
      a suffix. If "none", tick prefixes are hidden.
  showticksuffix
      Same as `showtickprefix` but for tick suffixes.
  tick0
      Sets the placement of the first tick on this axis. Use
      with `dtick`. If the axis `type` is "log", then you
      must take the log of your starting tick (e.g. to set
      the starting tick to 100, set the `tick0` to 2) except
      when `dtick`=*L<f>* (see `dtick` for more info). If the
      axis `type` is "date", it should be a date string, like
      date data. If the axis `type` is "category", it should
      be a number, using the scale where each category is
      assigned a serial number from zero in the order it
      appears.
  tickangle
      Sets the angle of the tick labels with respect to the
      horizontal. For example, a `tickangle` of -90 draws the
      tick labels vertically.
  tickcolor
      Sets the tick color.
  tickfont
      Sets the color bar's tick label font
  tickformat
      Sets the tick label formatting rule using d3 formatting
      mini-languages which are very similar to those in
      Python. For numbers, see:
      https://github.com/d3/d3-3.x-api-
      reference/blob/master/Formatting.md#d3_format And for
      dates see: https://github.com/d3/d3-time-
      format#locale_format We add one item to d3's date
      formatter: "%{n}f" for fractional seconds with n
      digits. For example, *2016-10-13 09:15:23.456* with
      tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
  tickformatstops
      A tuple of :class:`plotly.graph_objects.indicator.gauge
      .axis.Tickformatstop` instances or dicts with
      compatible properties
  tickformatstopdefaults
      When used in a template (as layout.template.data.indica
      tor.gauge.axis.tickformatstopdefaults), sets the
      default property values to use for elements of
      indicator.gauge.axis.tickformatstops
  ticklen
      Sets the tick length (in px).
  tickmode
      Sets the tick mode for this axis. If "auto", the number
      of ticks is set via `nticks`. If "linear", the
      placement of the ticks is determined by a starting
      position `tick0` and a tick step `dtick` ("linear" is
      the default value if `tick0` and `dtick` are provided).
      If "array", the placement of the ticks is set via
      `tickvals` and the tick text is `ticktext`. ("array" is
      the default value if `tickvals` is provided).
  tickprefix
      Sets a tick label prefix.
  ticks
      Determines whether ticks are drawn or not. If "", this
      axis' ticks are not drawn. If "outside" ("inside"),
      this axis' are drawn outside (inside) the axis lines.
  ticksuffix
      Sets a tick label suffix.
  ticktext
      Sets the text displayed at the ticks position via
      `tickvals`. Only has an effect if `tickmode` is set to
      "array". Used with `tickvals`.
  ticktextsrc
      Sets the source reference on Chart Studio Cloud for
      ticktext .
  tickvals
      Sets the values at which ticks on this axis appear.
      Only has an effect if `tickmode` is set to "array".
      Used with `ticktext`.
  tickvalssrc
      Sets the source reference on Chart Studio Cloud for
      tickvals .
  tickwidth
      Sets the tick width (in px).
  visible
      A single toggle to hide the axis while preserving
      interaction like dragging. Default is true when a
      cheater plot is present on the axis, otherwise false
  
  Returns
  -------
  Axis
code: def __init__(
      self,
      arg=None,
      dtick=None,
      exponentformat=None,
      minexponent=None,
      nticks=None,
      range=None,
      separatethousands=None,
      showexponent=None,
      showticklabels=None,
      showtickprefix=None,
      showticksuffix=None,
      tick0=None,
      tickangle=None,
      tickcolor=None,
      tickfont=None,
      tickformat=None,
      tickformatstops=None,
      tickformatstopdefaults=None,
      ticklen=None,
      tickmode=None,
      tickprefix=None,
      ticks=None,
      ticksuffix=None,
      ticktext=None,
      ticktextsrc=None,
      tickvals=None,
      tickvalssrc=None,
      tickwidth=None,
      visible=None,
      **kwargs,
  ):
      """
      Construct a new Axis object
  
      Parameters
      ----------
      arg
          dict of properties compatible with this constructor or
          an instance of
          :class:`plotly.graph_objs.indicator.gauge.Axis`
      dtick
          Sets the step in-between ticks on this axis. Use with
          `tick0`. Must be a positive number, or special strings
          available to "log" and "date" axes. If the axis `type`
          is "log", then ticks are set every 10^(n*dtick) where n
          is the tick number. For example, to set a tick mark at
          1, 10, 100, 1000, ... set dtick to 1. To set tick marks
          at 1, 100, 10000, ... set dtick to 2. To set tick marks
          at 1, 5, 25, 125, 625, 3125, ... set dtick to
          log_10(5), or 0.69897000433. "log" has several special
          values; "L<f>", where `f` is a positive number, gives
          ticks linearly spaced in value (but not position). For
          example `tick0` = 0.1, `dtick` = "L0.5" will put ticks
          at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus
          small digits between, use "D1" (all digits) or "D2"
          (only 2 and 5). `tick0` is ignored for "D1" and "D2".
          If the axis `type` is "date", then you must convert the
          time to milliseconds. For example, to set the interval
          between ticks to one day, set `dtick` to 86400000.0.
          "date" also has special values "M<n>" gives ticks
          spaced by a number of months. `n` must be a positive
          integer. To set ticks on the 15th of every third month,
          set `tick0` to "2000-01-15" and `dtick` to "M3". To set
          ticks every 4 years, set `dtick` to "M48"
      exponentformat
          Determines a formatting rule for the tick exponents.
          For example, consider the number 1,000,000,000. If
          "none", it appears as 1,000,000,000. If "e", 1e+9. If
          "E", 1E+9. If "power", 1x10^9 (with 9 in a super
          script). If "SI", 1G. If "B", 1B.
      minexponent
          Hide SI prefix for 10^n if |n| is below this number.
          This only has an effect when `tickformat` is "SI" or
          "B".
      nticks
          Specifies the maximum number of ticks for the
          particular axis. The actual number of ticks will be
          chosen automatically to be less than or equal to
          `nticks`. Has an effect only if `tickmode` is set to
          "auto".
      range
          Sets the range of this axis.
      separatethousands
          If "true", even 4-digit integers are separated
      showexponent
          If "all", all exponents are shown besides their
          significands. If "first", only the exponent of the
          first tick is shown. If "last", only the exponent of
          the last tick is shown. If "none", no exponents appear.
      showticklabels
          Determines whether or not the tick labels are drawn.
      showtickprefix
          If "all", all tick labels are displayed with a prefix.
          If "first", only the first tick is displayed with a
          prefix. If "last", only the last tick is displayed with
          a suffix. If "none", tick prefixes are hidden.
      showticksuffix
          Same as `showtickprefix` but for tick suffixes.
      tick0
          Sets the placement of the first tick on this axis. Use
          with `dtick`. If the axis `type` is "log", then you
          must take the log of your starting tick (e.g. to set
          the starting tick to 100, set the `tick0` to 2) except
          when `dtick`=*L<f>* (see `dtick` for more info). If the
          axis `type` is "date", it should be a date string, like
          date data. If the axis `type` is "category", it should
          be a number, using the scale where each category is
          assigned a serial number from zero in the order it
          appears.
      tickangle
          Sets the angle of the tick labels with respect to the
          horizontal. For example, a `tickangle` of -90 draws the
          tick labels vertically.
      tickcolor
          Sets the tick color.
      tickfont
          Sets the color bar's tick label font
      tickformat
          Sets the tick label formatting rule using d3 formatting
          mini-languages which are very similar to those in
          Python. For numbers, see:
          https://github.com/d3/d3-3.x-api-
          reference/blob/master/Formatting.md#d3_format And for
          dates see: https://github.com/d3/d3-time-
          format#locale_format We add one item to d3's date
          formatter: "%{n}f" for fractional seconds with n
          digits. For example, *2016-10-13 09:15:23.456* with
          tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
      tickformatstops
          A tuple of :class:`plotly.graph_objects.indicator.gauge
          .axis.Tickformatstop` instances or dicts with
          compatible properties
      tickformatstopdefaults
          When used in a template (as layout.template.data.indica
          tor.gauge.axis.tickformatstopdefaults), sets the
          default property values to use for elements of
          indicator.gauge.axis.tickformatstops
      ticklen
          Sets the tick length (in px).
      tickmode
          Sets the tick mode for this axis. If "auto", the number
          of ticks is set via `nticks`. If "linear", the
          placement of the ticks is determined by a starting
          position `tick0` and a tick step `dtick` ("linear" is
          the default value if `tick0` and `dtick` are provided).
          If "array", the placement of the ticks is set via
          `tickvals` and the tick text is `ticktext`. ("array" is
          the default value if `tickvals` is provided).
      tickprefix
          Sets a tick label prefix.
      ticks
          Determines whether ticks are drawn or not. If "", this
          axis' ticks are not drawn. If "outside" ("inside"),
          this axis' are drawn outside (inside) the axis lines.
      ticksuffix
          Sets a tick label suffix.
      ticktext
          Sets the text displayed at the ticks position via
          `tickvals`. Only has an effect if `tickmode` is set to
          "array". Used with `tickvals`.
      ticktextsrc
          Sets the source reference on Chart Studio Cloud for
          ticktext .
      tickvals
          Sets the values at which ticks on this axis appear.
          Only has an effect if `tickmode` is set to "array".
          Used with `ticktext`.
      tickvalssrc
          Sets the source reference on Chart Studio Cloud for
          tickvals .
      tickwidth
          Sets the tick width (in px).
      visible
          A single toggle to hide the axis while preserving
          interaction like dragging. Default is true when a
          cheater plot is present on the axis, otherwise false
  
      Returns
      -------
      Axis
      """
      super(Axis, self).__init__("axis")
  
      if "_parent" in kwargs:
          self._parent = kwargs["_parent"]
          return
  
      # Validate arg
      # ------------
      if arg is None:
          arg = {}
      elif isinstance(arg, self.__class__):
          arg = arg.to_plotly_json()
      elif isinstance(arg, dict):
          arg = _copy.copy(arg)
      else:
          raise ValueError(
              """\
  The first argument to the plotly.graph_objs.indicator.gauge.Axis 
  constructor must be a dict or 
  an instance of :class:`plotly.graph_objs.indicator.gauge.Axis`"""
          )
  
      # Handle skip_invalid
      # -------------------
      self._skip_invalid = kwargs.pop("skip_invalid", False)
      self._validate = kwargs.pop("_validate", True)
  
      # Populate data dict with properties
      # ----------------------------------
      _v = arg.pop("dtick", None)
      _v = dtick if dtick is not None else _v
      if _v is not None:
          self["dtick"] = _v
      _v = arg.pop("exponentformat", None)
      _v = exponentformat if exponentformat is not None else _v
      if _v is not None:
          self["exponentformat"] = _v
      _v = arg.pop("minexponent", None)
      _v = minexponent if minexponent is not None else _v
      if _v is not None:
          self["minexponent"] = _v
      _v = arg.pop("nticks", None)
      _v = nticks if nticks is not None else _v
      if _v is not None:
          self["nticks"] = _v
      _v = arg.pop("range", None)
      _v = range if range is not None else _v
      if _v is not None:
          self["range"] = _v
      _v = arg.pop("separatethousands", None)
      _v = separatethousands if separatethousands is not None else _v
      if _v is not None:
          self["separatethousands"] = _v
      _v = arg.pop("showexponent", None)
      _v = showexponent if showexponent is not None else _v
      if _v is not None:
          self["showexponent"] = _v
      _v = arg.pop("showticklabels", None)
      _v = showticklabels if showticklabels is not None else _v
      if _v is not None:
          self["showticklabels"] = _v
      _v = arg.pop("showtickprefix", None)
      _v = showtickprefix if showtickprefix is not None else _v
      if _v is not None:
          self["showtickprefix"] = _v
      _v = arg.pop("showticksuffix", None)
      _v = showticksuffix if showticksuffix is not None else _v
      if _v is not None:
          self["showticksuffix"] = _v
      _v = arg.pop("tick0", None)
      _v = tick0 if tick0 is not None else _v
      if _v is not None:
          self["tick0"] = _v
      _v = arg.pop("tickangle", None)
      _v = tickangle if tickangle is not None else _v
      if _v is not None:
          self["tickangle"] = _v
      _v = arg.pop("tickcolor", None)
      _v = tickcolor if tickcolor is not None else _v
      if _v is not None:
          self["tickcolor"] = _v
      _v = arg.pop("tickfont", None)
      _v = tickfont if tickfont is not None else _v
      if _v is not None:
          self["tickfont"] = _v
      _v = arg.pop("tickformat", None)
      _v = tickformat if tickformat is not None else _v
      if _v is not None:
          self["tickformat"] = _v
      _v = arg.pop("tickformatstops", None)
      _v = tickformatstops if tickformatstops is not None else _v
      if _v is not None:
          self["tickformatstops"] = _v
      _v = arg.pop("tickformatstopdefaults", None)
      _v = (
          tickformatstopdefaults
          if tickformatstopdefaults is not None
          else _v
      )
      if _v is not None:
          self["tickformatstopdefaults"] = _v
      _v = arg.pop("ticklen", None)
      _v = ticklen if ticklen is not None else _v
      if _v is not None:
          self["ticklen"] = _v
      _v = arg.pop("tickmode", None)
      _v = tickmode if tickmode is not None else _v
      if _v is not None:
          self["tickmode"] = _v
      _v = arg.pop("tickprefix", None)
      _v = tickprefix if tickprefix is not None else _v
      if _v is not None:
          self["tickprefix"] = _v
      _v = arg.pop("ticks", None)
      _v = ticks if ticks is not None else _v
      if _v is not None:
          self["ticks"] = _v
      _v = arg.pop("ticksuffix", None)
      _v = ticksuffix if ticksuffix is not None else _v
      if _v is not None:
          self["ticksuffix"] = _v
      _v = arg.pop("ticktext", None)
      _v = ticktext if ticktext is not None else _v
      if _v is not None:
          self["ticktext"] = _v
      _v = arg.pop("ticktextsrc", None)
      _v = ticktextsrc if ticktextsrc is not None else _v
      if _v is not None:
          self["ticktextsrc"] = _v
      _v = arg.pop("tickvals", None)
      _v = tickvals if tickvals is not None else _v
      if _v is not None:
          self["tickvals"] = _v
      _v = arg.pop("tickvalssrc", None)
      _v = tickvalssrc if tickvalssrc is not None else _v
      if _v is not None:
          self["tickvalssrc"] = _v
      _v = arg.pop("tickwidth", None)
      _v = tickwidth if tickwidth is not None else _v
      if _v is not None:
          self["tickwidth"] = _v
      _v = arg.pop("visible", None)
      _v = visible if visible is not None else _v
      if _v is not None:
          self["visible"] = _v
  
      # Process unknown kwargs
      # ----------------------
      self._process_kwargs(**dict(arg, **kwargs))
  
      # Reset skip_invalid
      # ------------------
      self._skip_invalid = False
  
imports: from plotly.basedatatypes import BaseTraceHierarchyType
  import copy
label_desc: Use image node_id 58 to create a new Axis object from inherited base classes: _BaseTraceHierarchyType with example: obj = Axis(arg, dtick, exponentformat, minexponent, nticks, range, separatethousands, showexponent, showticklabels, showtickprefix, showticksuffix, tick0, tickangle, tickcolor, tickfont, tickformat, tickformatstops, tickformatstopdefaults, ticklen, tickmode, tickprefix, ticks, ticksuffix, ticktext, ticktextsrc, tickvals, tickvalssrc, tickwidth, visible)