class_docstr: Violin Plot
  
  {usage}
  
  Parameters
  ----------
  {common_parameters}
  draw_quantiles : float | list[float], default=None
      draw horizontal lines at the given quantiles (0..1)
      of the density estimate.
  style : str, default="full"
      The type of violin plot to draw. The options are:
  
      ```python
      'full'        # Regular (2 sided violins)
      'left'        # Left-sided half violins
      'right'       # Right-sided half violins
      'left-right'  # Alternate (left first) half violins by the group
      'right-left'  # Alternate (right first) half violins by the group
      ```
class_docstr_tok: ["Violin","Plot","{","usage","}","Parameters","--","--","--","--","--","{","common_parameters","}","draw_quantiles",":","float","|","list","[","float","]",",","default=None","draw","horizontal","lines","at","the","given","quantiles","(","0","..","1",")","of","the","density","estimate",".","style",":","str",",","default=","''","full","''","The","type","of","violin","plot","to","draw",".","The","options","are",":","``","`","python","'full","'","#","Regular","(","2","sided","violins",")","'left","'","#","Left-sided","half","violins","'right","'","#","Right-sided","half","violins","'left-right","'","#","Alternate","(","left","first",")","half","violins","by","the","group","'right-left","'","#","Alternate","(","right","first",")","half","violins","by","the","group","``","`"]
code: def __init__(
      self,
      mapping: Aes | None = None,
      data: DataLike | None = None,
      **kwargs: Any,
  ):
      if "draw_quantiles" in kwargs:
          kwargs["draw_quantiles"] = np.repeat(
              kwargs["draw_quantiles"], 1
          )
          if not all(0 < q < 1 for q in kwargs["draw_quantiles"]):
              raise ValueError(
                  "draw_quantiles must be a float or "
                  "an iterable of floats (>0.0; < 1.0)"
              )
  
      if "style" in kwargs:
          allowed = (
              "full",
              "left",
              "right",
              "left-right",
              "right-left",
          )
          if kwargs["style"] not in allowed:
              raise ValueError(f"style must be either {allowed}")
  
      super().__init__(mapping, data, **kwargs)
  
file_path: plotnine/plotnine/geoms/geom_violin.py
imports: from __future__ import annotations
  import typing
  import numpy
  import pandas
  from .._utils import groupby_apply, interleave, resolution
  from ..doctools import document
  from .geom import geom
  from .geom_path import geom_path
  from .geom_polygon import geom_polygon
label_desc: Use image node_id 1 to create a new geom_violin object from inherited base classes: geom with example: obj = geom_violin(mapping, data)