class_docstr: Plot functions for mixed type x & y axes:
  
  Methods:
      - bar
      - bar_stacked
      - lollipop
      - parallel
class_docstr_tok: ["Plot","functions","for","mixed","type","x","&","y","axes",":","Methods",":","-","bar","-","bar_stacked","-","lollipop","-","parallel"]
docstr: Box-and-whisker plot.
  
  Note:
      To change the orientation set x_axis_type or y_axis_type
      argument of the Chart object.
  
  Args:
      data_frame (pandas.DataFrame): Data source for the plot.
      categorical_columns (str or list): Column name to plot on
          the categorical axis.
      numeric_column (str): Column name to plot on the numerical axis.
      color_column (str, optional): Column name to group by on
          the color dimension.
      color_order (list, optional):
          List of values within the 'color_column' for
              specific color sort.
      categorical_order_by (str or array-like, optional):
          Dimension for ordering the categorical axis. Default 'labels'.
          - 'labels': Order categorical axis by the categorical labels.
          - array-like object (list, tuple, np.array): New labels
              to conform the categorical axis to.
      categorical_order_ascending (bool, optional):
          Sort order of the categorical axis. Default True.
      outlier_marker (str, optional): Outlier marker type. Valid types:
          'asterisk', 'circle', 'circle_cross', 'circle_x', 'cross',
          'diamond', 'diamond_cross', 'hex', 'inverted_triangle',
          'square', 'square_x', 'square_cross', 'triangle',
          'x', '*', '+', 'o', 'ox', 'o+' Default 'circle'
      outlier_color (str, optional): Color name or hex value.
          See chartify.color_palettes.show() for available color names.
          Default 'black'
      outlier_alpha (float, optional): Alpha value. Default 0.3
      outlier_size (float, optional): Size of outlier markers.
          Default 15
docstr_tok: ["Box-and-whisker","plot",".","Note",":","To","change","the","orientation","set","x_axis_type","or","y_axis_type","argument","of","the","Chart","object",".","Args",":","data_frame","(","pandas.DataFrame",")",":","Data","source","for","the","plot",".","categorical_columns","(","str","or","list",")",":","Column","name","to","plot","on","the","categorical","axis",".","numeric_column","(","str",")",":","Column","name","to","plot","on","the","numerical","axis",".","color_column","(","str",",","optional",")",":","Column","name","to","group","by","on","the","color","dimension",".","color_order","(","list",",","optional",")",":","List","of","values","within","the","'color_column","'","for","specific","color","sort",".","categorical_order_by","(","str","or","array-like",",","optional",")",":","Dimension","for","ordering","the","categorical","axis",".","Default","'labels","'",".","-","'labels","'",":","Order","categorical","axis","by","the","categorical","labels",".","-","array-like","object","(","list",",","tuple",",","np.array",")",":","New","labels","to","conform","the","categorical","axis","to",".","categorical_order_ascending","(","bool",",","optional",")",":","Sort","order","of","the","categorical","axis",".","Default","True",".","outlier_marker","(","str",",","optional",")",":","Outlier","marker","type",".","Valid","types",":","'asterisk","'",",","'circle","'",",","'circle_cross","'",",","'circle_x","'",",","'cross","'",",","'diamond","'",",","'diamond_cross","'",",","'hex","'",",","'inverted_triangle","'",",","'square","'",",","'square_x","'",",","'square_cross","'",",","'triangle","'",",","'","x","'",",","'","*","'",",","'+","'",",","'","o","'",",","'ox","'",",","'","o+","'","Default","'circle'","outlier_color","(","str",",","optional",")",":","Color","name","or","hex","value",".","See","chartify.color_palettes.show","(",")","for","available","color","names",".","Default","'black'","outlier_alpha","(","float",",","optional",")",":","Alpha","value",".","Default","0.3","outlier_size","(","float",",","optional",")",":","Size","of","outlier","markers",".","Default","15"]
code: def boxplot(
      self,
      data_frame,
      categorical_columns,
      numeric_column,
      color_column=None,
      color_order=None,
      categorical_order_by="labels",
      categorical_order_ascending=True,
      outlier_marker="circle",
      outlier_color="black",
      outlier_alpha=0.3,
      outlier_size=15,
  ):
      """Box-and-whisker plot.
  
      Note:
          To change the orientation set x_axis_type or y_axis_type
          argument of the Chart object.
  
      Args:
          data_frame (pandas.DataFrame): Data source for the plot.
          categorical_columns (str or list): Column name to plot on
              the categorical axis.
          numeric_column (str): Column name to plot on the numerical axis.
          color_column (str, optional): Column name to group by on
              the color dimension.
          color_order (list, optional):
              List of values within the 'color_column' for
                  specific color sort.
          categorical_order_by (str or array-like, optional):
              Dimension for ordering the categorical axis. Default 'labels'.
              - 'labels': Order categorical axis by the categorical labels.
              - array-like object (list, tuple, np.array): New labels
                  to conform the categorical axis to.
          categorical_order_ascending (bool, optional):
              Sort order of the categorical axis. Default True.
          outlier_marker (str, optional): Outlier marker type. Valid types:
              'asterisk', 'circle', 'circle_cross', 'circle_x', 'cross',
              'diamond', 'diamond_cross', 'hex', 'inverted_triangle',
              'square', 'square_x', 'square_cross', 'triangle',
              'x', '*', '+', 'o', 'ox', 'o+' Default 'circle'
          outlier_color (str, optional): Color name or hex value.
              See chartify.color_palettes.show() for available color names.
              Default 'black'
          outlier_alpha (float, optional): Alpha value. Default 0.3
          outlier_size (float, optional): Size of outlier markers.
              Default 15
      """
  
      # check categorical_order_by value
      order_length = getattr(categorical_order_by, "__len__", None)
      is_string = isinstance(categorical_order_by, str)
      if (not is_string and order_length is None) or (
          is_string and categorical_order_by != "labels"
      ):
          raise ValueError(
              """Argument categorical_order_by must be 'labels',
                               or a list of values."""
          )
  
      (
          df_intervals_and_floating_bars,
          outliers,
      ) = self._compute_boxplot_df(
          data_frame, categorical_columns, numeric_column
      )
  
      # upper and lower bound
      self.interval(
          df_intervals_and_floating_bars,
          categorical_columns,
          "lower",
          "upper",
          categorical_order_by=categorical_order_by,
          categorical_order_ascending=categorical_order_ascending,
      )
  
      # boxes for q1 to q2 and q2 to q3
      vertical = self._chart.axes._vertical
  
      source_low, _, _ = self._construct_source(
          df_intervals_and_floating_bars,
          categorical_columns,
          ["q1", "q2"],
          categorical_order_by=categorical_order_by,
          categorical_order_ascending=categorical_order_ascending,
          color_column=color_column,
      )
  
      source_high, factors, _ = self._construct_source(
          df_intervals_and_floating_bars,
          categorical_columns,
          ["q2", "q3"],
          categorical_order_by=categorical_order_by,
          categorical_order_ascending=categorical_order_ascending,
          color_column=color_column,
      )
  
      colors, _ = self._get_color_and_order(
          df_intervals_and_floating_bars,
          color_column,
          color_order,
          categorical_columns,
      )
  
      if color_column is None:
          colors = colors[0]
  
      self._set_categorical_axis_default_factors(vertical, factors)
      self._set_categorical_axis_default_range(
          vertical, data_frame, numeric_column
      )
  
      bar_width = self._get_bar_width(factors)
  
      if color_column:
          legend = bokeh.core.properties.field("color_column")
          legend = "color_column"
      else:
          legend = None
  
      if vertical:
          self._plot_with_legend(
              self._chart.figure.vbar,
              legend_group=None,
              x="factors",
              width=bar_width,
              top="q2",
              bottom="q1",
              line_color="white",
              source=source_low,
              fill_color=colors,
          )
          self._plot_with_legend(
              self._chart.figure.vbar,
              legend_group=legend,
              x="factors",
              width=bar_width,
              top="q3",
              bottom="q2",
              line_color="white",
              source=source_high,
              fill_color=colors,
          )
  
      else:
          self._plot_with_legend(
              self._chart.figure.hbar,
              legend_group=None,
              y="factors",
              height=bar_width,
              right="q2",
              left="q1",
              line_color="white",
              source=source_low,
              fill_color=colors,
          )
          self._plot_with_legend(
              self._chart.figure.hbar,
              legend_group=legend,
              y="factors",
              height=bar_width,
              right="q3",
              left="q2",
              line_color="white",
              source=source_high,
              fill_color=colors,
          )
  
      # outliers
      factors = outliers.set_index(categorical_columns).index
      outliers = outliers[
          [col for col in outliers.columns if col == numeric_column]
      ]
  
      source_outliers = self._named_column_data_source(
          outliers, series_name=None
      )
      source_outliers.add(factors, "factors")
  
      if vertical:
          x_value, y_value = "factors", numeric_column
      else:
          y_value, x_value = "factors", numeric_column
  
      self._plot_with_legend(
          self._chart.figure.scatter,
          legend_label=None,
          x=x_value,
          y=y_value,
          size=outlier_size,
          fill_color=outlier_color,
          line_color=outlier_color,
          source=source_outliers,
          marker=outlier_marker,
          alpha=outlier_alpha,
      )
  
      return self._chart
  
imports: import bokeh
  import pandas
  import numpy
  from chartify._core.colors import Color, color_palettes
  from chartify._core.axes import NumericalYMixin, NumericalXMixin
  from scipy.stats import gaussian_kde
label_desc: Use image node_id 16 for calling the PlotMixedTypeXY obj's underlying member method code with example usage: obj.boxplot(data_frame, categorical_columns, numeric_column, color_column, color_order, categorical_order_by, categorical_order_ascending, outlier_marker, outlier_color, outlier_alpha, outlier_size) and returns: self