docstr: Construct a new Imaginaryaxis object
  
  Parameters
  ----------
  arg
      dict of properties compatible with this constructor or
      an instance of
      :class:`plotly.graph_objs.layout.smith.Imaginaryaxis`
  color
      Sets default for all colors associated with this axis
      all at once: line, font, tick, and grid colors. Grid
      color is lightened by blending this with the plot
      background Individual pieces can override this.
  gridcolor
      Sets the color of the grid lines.
  griddash
      Sets the dash style of lines. Set to a dash type string
      ("solid", "dot", "dash", "longdash", "dashdot", or
      "longdashdot") or a dash length list in px (eg
      "5px,10px,2px,2px").
  gridwidth
      Sets the width (in px) of the grid lines.
  hoverformat
      Sets the hover text formatting rule using d3 formatting
      mini-languages which are very similar to those in
      Python. For numbers, see:
      https://github.com/d3/d3-format/tree/v1.4.5#d3-format.
      And for dates see: https://github.com/d3/d3-time-
      format/tree/v2.2.3#locale_format. We add two items to
      d3's date formatter: "%h" for half of the year as a
      decimal number as well as "%{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"
  labelalias
      Replacement text for specific tick or hover labels. For
      example using {US: 'USA', CA: 'Canada'} changes US to
      USA and CA to Canada. The labels we would have shown
      must match the keys exactly, after adding any
      tickprefix or ticksuffix. For negative numbers the
      minus sign symbol used (U+2212) is wider than the
      regular ascii dash. That means you need to use −1
      instead of -1. labelalias can be used with any axis
      type, and both keys (if needed) and values (if desired)
      can include html-like tags or MathJax.
  layer
      Sets the layer on which this axis is displayed. If
      *above traces*, this axis is displayed above all the
      subplot's traces If *below traces*, this axis is
      displayed below all the subplot's traces, but above the
      grid lines. Useful when used together with scatter-like
      traces with `cliponaxis` set to False to show markers
      and/or text nodes above this axis.
  linecolor
      Sets the axis line color.
  linewidth
      Sets the width (in px) of the axis line.
  showgrid
      Determines whether or not grid lines are drawn. If
      True, the grid lines are drawn at every tick mark.
  showline
      Determines whether or not a line bounding this axis is
      drawn.
  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.
  tickcolor
      Sets the tick color.
  tickfont
      Sets the tick 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-format/tree/v1.4.5#d3-format.
      And for dates see: https://github.com/d3/d3-time-
      format/tree/v2.2.3#locale_format. We add two items to
      d3's date formatter: "%h" for half of the year as a
      decimal number as well as "%{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"
  ticklen
      Sets the tick length (in px).
  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.
  tickvals
      Sets the values at which ticks on this axis appear.
      Defaults to `realaxis.tickvals` plus the same as
      negatives and zero.
  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
  -------
  Imaginaryaxis
code: def __init__(
      self,
      arg=None,
      color=None,
      gridcolor=None,
      griddash=None,
      gridwidth=None,
      hoverformat=None,
      labelalias=None,
      layer=None,
      linecolor=None,
      linewidth=None,
      showgrid=None,
      showline=None,
      showticklabels=None,
      showtickprefix=None,
      showticksuffix=None,
      tickcolor=None,
      tickfont=None,
      tickformat=None,
      ticklen=None,
      tickprefix=None,
      ticks=None,
      ticksuffix=None,
      tickvals=None,
      tickvalssrc=None,
      tickwidth=None,
      visible=None,
      **kwargs,
  ):
      """
      Construct a new Imaginaryaxis object
  
      Parameters
      ----------
      arg
          dict of properties compatible with this constructor or
          an instance of
          :class:`plotly.graph_objs.layout.smith.Imaginaryaxis`
      color
          Sets default for all colors associated with this axis
          all at once: line, font, tick, and grid colors. Grid
          color is lightened by blending this with the plot
          background Individual pieces can override this.
      gridcolor
          Sets the color of the grid lines.
      griddash
          Sets the dash style of lines. Set to a dash type string
          ("solid", "dot", "dash", "longdash", "dashdot", or
          "longdashdot") or a dash length list in px (eg
          "5px,10px,2px,2px").
      gridwidth
          Sets the width (in px) of the grid lines.
      hoverformat
          Sets the hover text formatting rule using d3 formatting
          mini-languages which are very similar to those in
          Python. For numbers, see:
          https://github.com/d3/d3-format/tree/v1.4.5#d3-format.
          And for dates see: https://github.com/d3/d3-time-
          format/tree/v2.2.3#locale_format. We add two items to
          d3's date formatter: "%h" for half of the year as a
          decimal number as well as "%{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"
      labelalias
          Replacement text for specific tick or hover labels. For
          example using {US: 'USA', CA: 'Canada'} changes US to
          USA and CA to Canada. The labels we would have shown
          must match the keys exactly, after adding any
          tickprefix or ticksuffix. For negative numbers the
          minus sign symbol used (U+2212) is wider than the
          regular ascii dash. That means you need to use −1
          instead of -1. labelalias can be used with any axis
          type, and both keys (if needed) and values (if desired)
          can include html-like tags or MathJax.
      layer
          Sets the layer on which this axis is displayed. If
          *above traces*, this axis is displayed above all the
          subplot's traces If *below traces*, this axis is
          displayed below all the subplot's traces, but above the
          grid lines. Useful when used together with scatter-like
          traces with `cliponaxis` set to False to show markers
          and/or text nodes above this axis.
      linecolor
          Sets the axis line color.
      linewidth
          Sets the width (in px) of the axis line.
      showgrid
          Determines whether or not grid lines are drawn. If
          True, the grid lines are drawn at every tick mark.
      showline
          Determines whether or not a line bounding this axis is
          drawn.
      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.
      tickcolor
          Sets the tick color.
      tickfont
          Sets the tick 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-format/tree/v1.4.5#d3-format.
          And for dates see: https://github.com/d3/d3-time-
          format/tree/v2.2.3#locale_format. We add two items to
          d3's date formatter: "%h" for half of the year as a
          decimal number as well as "%{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"
      ticklen
          Sets the tick length (in px).
      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.
      tickvals
          Sets the values at which ticks on this axis appear.
          Defaults to `realaxis.tickvals` plus the same as
          negatives and zero.
      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
      -------
      Imaginaryaxis
      """
      super(Imaginaryaxis, self).__init__("imaginaryaxis")
  
      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.layout.smith.Imaginaryaxis
  constructor must be a dict or
  an instance of :class:`plotly.graph_objs.layout.smith.Imaginaryaxis`"""
          )
  
      # 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("color", None)
      _v = color if color is not None else _v
      if _v is not None:
          self["color"] = _v
      _v = arg.pop("gridcolor", None)
      _v = gridcolor if gridcolor is not None else _v
      if _v is not None:
          self["gridcolor"] = _v
      _v = arg.pop("griddash", None)
      _v = griddash if griddash is not None else _v
      if _v is not None:
          self["griddash"] = _v
      _v = arg.pop("gridwidth", None)
      _v = gridwidth if gridwidth is not None else _v
      if _v is not None:
          self["gridwidth"] = _v
      _v = arg.pop("hoverformat", None)
      _v = hoverformat if hoverformat is not None else _v
      if _v is not None:
          self["hoverformat"] = _v
      _v = arg.pop("labelalias", None)
      _v = labelalias if labelalias is not None else _v
      if _v is not None:
          self["labelalias"] = _v
      _v = arg.pop("layer", None)
      _v = layer if layer is not None else _v
      if _v is not None:
          self["layer"] = _v
      _v = arg.pop("linecolor", None)
      _v = linecolor if linecolor is not None else _v
      if _v is not None:
          self["linecolor"] = _v
      _v = arg.pop("linewidth", None)
      _v = linewidth if linewidth is not None else _v
      if _v is not None:
          self["linewidth"] = _v
      _v = arg.pop("showgrid", None)
      _v = showgrid if showgrid is not None else _v
      if _v is not None:
          self["showgrid"] = _v
      _v = arg.pop("showline", None)
      _v = showline if showline is not None else _v
      if _v is not None:
          self["showline"] = _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("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("ticklen", None)
      _v = ticklen if ticklen is not None else _v
      if _v is not None:
          self["ticklen"] = _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("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 BaseLayoutHierarchyType
  import copy
label_desc: Use image node_id 52 to create a new Imaginaryaxis object from inherited base classes: _BaseLayoutHierarchyType with example: obj = Imaginaryaxis(arg, color, gridcolor, griddash, gridwidth, hoverformat, labelalias, layer, linecolor, linewidth, showgrid, showline, showticklabels, showtickprefix, showticksuffix, tickcolor, tickfont, tickformat, ticklen, tickprefix, ticks, ticksuffix, tickvals, tickvalssrc, tickwidth, visible)