docstr: Construct a new Newshape object
  
  Parameters
  ----------
  arg
      dict of properties compatible with this constructor or
      an instance of
      :class:`plotly.graph_objs.layout.Newshape`
  drawdirection
      When `dragmode` is set to "drawrect", "drawline" or
      "drawcircle" this limits the drag to be horizontal,
      vertical or diagonal. Using "diagonal" there is no
      limit e.g. in drawing lines in any direction. "ortho"
      limits the draw to be either horizontal or vertical.
      "horizontal" allows horizontal extend. "vertical"
      allows vertical extend.
  fillcolor
      Sets the color filling new shapes' interior. Please
      note that if using a fillcolor with alpha greater than
      half, drag inside the active shape starts moving the
      shape underneath, otherwise a new shape could be
      started over.
  fillrule
      Determines the path's interior. For more info please
      visit https://developer.mozilla.org/en-
      US/docs/Web/SVG/Attribute/fill-rule
  label
      :class:`plotly.graph_objects.layout.newshape.Label`
      instance or dict with compatible properties
  layer
      Specifies whether new shapes are drawn below or above
      traces.
  legend
      Sets the reference to a legend to show new shape in.
      References to these legends are "legend", "legend2",
      "legend3", etc. Settings for these legends are set in
      the layout, under `layout.legend`, `layout.legend2`,
      etc.
  legendgroup
      Sets the legend group for new shape. Traces and shapes
      part of the same legend group hide/show at the same
      time when toggling legend items.
  legendgrouptitle
      :class:`plotly.graph_objects.layout.newshape.Legendgrou
      ptitle` instance or dict with compatible properties
  legendrank
      Sets the legend rank for new shape. Items and groups
      with smaller ranks are presented on top/left side while
      with "reversed" `legend.traceorder` they are on
      bottom/right side. The default legendrank is 1000, so
      that you can use ranks less than 1000 to place certain
      items before all unranked items, and ranks greater than
      1000 to go after all unranked items.
  legendwidth
      Sets the width (in px or fraction) of the legend for
      new shape.
  line
      :class:`plotly.graph_objects.layout.newshape.Line`
      instance or dict with compatible properties
  name
      Sets new shape name. The name appears as the legend
      item.
  opacity
      Sets the opacity of new shapes.
  showlegend
      Determines whether or not new shape is shown in the
      legend.
  visible
      Determines whether or not new shape is visible. If
      "legendonly", the shape is not drawn, but can appear as
      a legend item (provided that the legend itself is
      visible).
  
  Returns
  -------
  Newshape
docstr_tok: ["Construct","a","new","Newshape","object","Parameters","--","--","--","--","--","arg","dict","of","properties","compatible","with","this","constructor","or","an","instance","of",":","class",":","`","plotly.graph_objs.layout.Newshape","`","drawdirection","When","`","dragmode","`","is","set","to","``","drawrect","''",",","``","drawline","''","or","``","drawcircle","''","this","limits","the","drag","to","be","horizontal",",","vertical","or","diagonal",".","Using","``","diagonal","''","there","is","no","limit","e.g",".","in","drawing","lines","in","any","direction",".","``","ortho","''","limits","the","draw","to","be","either","horizontal","or","vertical",".","``","horizontal","''","allows","horizontal","extend",".","``","vertical","''","allows","vertical","extend",".","fillcolor","Sets","the","color","filling","new","shapes","'","interior",".","Please","note","that","if","using","a","fillcolor","with","alpha","greater","than","half",",","drag","inside","the","active","shape","starts","moving","the","shape","underneath",",","otherwise","a","new","shape","could","be","started","over",".","fillrule","Determines","the","path","'s","interior",".","For","more","info","please","visit","https",":","\/\/developer.mozilla.org\/en-","US\/docs\/Web\/SVG\/Attribute\/fill-rule","label",":","class",":","`","plotly.graph_objects.layout.newshape.Label","`","instance","or","dict","with","compatible","properties","layer","Specifies","whether","new","shapes","are","drawn","below","or","above","traces",".","legend","Sets","the","reference","to","a","legend","to","show","new","shape","in",".","References","to","these","legends","are","``","legend","''",",","``","legend2","''",",","``","legend3","''",",","etc",".","Settings","for","these","legends","are","set","in","the","layout",",","under","`","layout.legend","`",",","`","layout.legend2","`",",","etc",".","legendgroup","Sets","the","legend","group","for","new","shape",".","Traces","and","shapes","part","of","the","same","legend","group","hide\/show","at","the","same","time","when","toggling","legend","items",".","legendgrouptitle",":","class",":","`","plotly.graph_objects.layout.newshape.Legendgrou","ptitle","`","instance","or","dict","with","compatible","properties","legendrank","Sets","the","legend","rank","for","new","shape",".","Items","and","groups","with","smaller","ranks","are","presented","on","top\/left","side","while","with","``","reversed","''","`","legend.traceorder","`","they","are","on","bottom\/right","side",".","The","default","legendrank","is","1000",",","so","that","you","can","use","ranks","less","than","1000","to","place","certain","items","before","all","unranked","items",",","and","ranks","greater","than","1000","to","go","after","all","unranked","items",".","legendwidth","Sets","the","width","(","in","px","or","fraction",")","of","the","legend","for","new","shape",".","line",":","class",":","`","plotly.graph_objects.layout.newshape.Line","`","instance","or","dict","with","compatible","properties","name","Sets","new","shape","name",".","The","name","appears","as","the","legend","item",".","opacity","Sets","the","opacity","of","new","shapes",".","showlegend","Determines","whether","or","not","new","shape","is","shown","in","the","legend",".","visible","Determines","whether","or","not","new","shape","is","visible",".","If","``","legendonly","''",",","the","shape","is","not","drawn",",","but","can","appear","as","a","legend","item","(","provided","that","the","legend","itself","is","visible",")",".","Returns","--","--","--","-","Newshape"]
code: def __init__(
      self,
      arg=None,
      drawdirection=None,
      fillcolor=None,
      fillrule=None,
      label=None,
      layer=None,
      legend=None,
      legendgroup=None,
      legendgrouptitle=None,
      legendrank=None,
      legendwidth=None,
      line=None,
      name=None,
      opacity=None,
      showlegend=None,
      visible=None,
      **kwargs,
  ):
      """
      Construct a new Newshape object
  
      Parameters
      ----------
      arg
          dict of properties compatible with this constructor or
          an instance of
          :class:`plotly.graph_objs.layout.Newshape`
      drawdirection
          When `dragmode` is set to "drawrect", "drawline" or
          "drawcircle" this limits the drag to be horizontal,
          vertical or diagonal. Using "diagonal" there is no
          limit e.g. in drawing lines in any direction. "ortho"
          limits the draw to be either horizontal or vertical.
          "horizontal" allows horizontal extend. "vertical"
          allows vertical extend.
      fillcolor
          Sets the color filling new shapes' interior. Please
          note that if using a fillcolor with alpha greater than
          half, drag inside the active shape starts moving the
          shape underneath, otherwise a new shape could be
          started over.
      fillrule
          Determines the path's interior. For more info please
          visit https://developer.mozilla.org/en-
          US/docs/Web/SVG/Attribute/fill-rule
      label
          :class:`plotly.graph_objects.layout.newshape.Label`
          instance or dict with compatible properties
      layer
          Specifies whether new shapes are drawn below or above
          traces.
      legend
          Sets the reference to a legend to show new shape in.
          References to these legends are "legend", "legend2",
          "legend3", etc. Settings for these legends are set in
          the layout, under `layout.legend`, `layout.legend2`,
          etc.
      legendgroup
          Sets the legend group for new shape. Traces and shapes
          part of the same legend group hide/show at the same
          time when toggling legend items.
      legendgrouptitle
          :class:`plotly.graph_objects.layout.newshape.Legendgrou
          ptitle` instance or dict with compatible properties
      legendrank
          Sets the legend rank for new shape. Items and groups
          with smaller ranks are presented on top/left side while
          with "reversed" `legend.traceorder` they are on
          bottom/right side. The default legendrank is 1000, so
          that you can use ranks less than 1000 to place certain
          items before all unranked items, and ranks greater than
          1000 to go after all unranked items.
      legendwidth
          Sets the width (in px or fraction) of the legend for
          new shape.
      line
          :class:`plotly.graph_objects.layout.newshape.Line`
          instance or dict with compatible properties
      name
          Sets new shape name. The name appears as the legend
          item.
      opacity
          Sets the opacity of new shapes.
      showlegend
          Determines whether or not new shape is shown in the
          legend.
      visible
          Determines whether or not new shape is visible. If
          "legendonly", the shape is not drawn, but can appear as
          a legend item (provided that the legend itself is
          visible).
  
      Returns
      -------
      Newshape
      """
      super(Newshape, self).__init__("newshape")
  
      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.Newshape
  constructor must be a dict or
  an instance of :class:`plotly.graph_objs.layout.Newshape`"""
          )
  
      # 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("drawdirection", None)
      _v = drawdirection if drawdirection is not None else _v
      if _v is not None:
          self["drawdirection"] = _v
      _v = arg.pop("fillcolor", None)
      _v = fillcolor if fillcolor is not None else _v
      if _v is not None:
          self["fillcolor"] = _v
      _v = arg.pop("fillrule", None)
      _v = fillrule if fillrule is not None else _v
      if _v is not None:
          self["fillrule"] = _v
      _v = arg.pop("label", None)
      _v = label if label is not None else _v
      if _v is not None:
          self["label"] = _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("legend", None)
      _v = legend if legend is not None else _v
      if _v is not None:
          self["legend"] = _v
      _v = arg.pop("legendgroup", None)
      _v = legendgroup if legendgroup is not None else _v
      if _v is not None:
          self["legendgroup"] = _v
      _v = arg.pop("legendgrouptitle", None)
      _v = legendgrouptitle if legendgrouptitle is not None else _v
      if _v is not None:
          self["legendgrouptitle"] = _v
      _v = arg.pop("legendrank", None)
      _v = legendrank if legendrank is not None else _v
      if _v is not None:
          self["legendrank"] = _v
      _v = arg.pop("legendwidth", None)
      _v = legendwidth if legendwidth is not None else _v
      if _v is not None:
          self["legendwidth"] = _v
      _v = arg.pop("line", None)
      _v = line if line is not None else _v
      if _v is not None:
          self["line"] = _v
      _v = arg.pop("name", None)
      _v = name if name is not None else _v
      if _v is not None:
          self["name"] = _v
      _v = arg.pop("opacity", None)
      _v = opacity if opacity is not None else _v
      if _v is not None:
          self["opacity"] = _v
      _v = arg.pop("showlegend", None)
      _v = showlegend if showlegend is not None else _v
      if _v is not None:
          self["showlegend"] = _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 32 to create a new Newshape object from inherited base classes: _BaseLayoutHierarchyType with example: obj = Newshape(arg, drawdirection, fillcolor, fillrule, label, layer, legend, legendgroup, legendgrouptitle, legendrank, legendwidth, line, name, opacity, showlegend, visible)