class_docstr: Plot functions for numeric x & y axes:
  
  Methods:
      - line
      - scatter
      - text
      - area
class_docstr_tok: ["Plot","functions","for","numeric","x","&","y","axes",":","Methods",":","-","line","-","scatter","-","text","-","area"]
docstr: Area plot.
  
  Note:
      - When a single y_column is passed: Shade area between the
          y_values and zero.
      - Use `stacked` argument for stacked areas.
      - When both y_column and second_y_column are passed:
          Shade area between the two y_columns.
  
  Args:
      data_frame (pandas.DataFrame): Data source for the plot.
      x_column (str): Column name to plot on the x axis.
      y_column (str): Column name to plot on the y axis.
      second_y_column (str, optional): Column name to plot on
          the y 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 sorting of the colors.
      stacked (bool, optional): Stacked the areas.
          Only applicable with a single y_column.
          Default: False.
docstr_tok: ["Area","plot",".","Note",":","-","When","a","single","y_column","is","passed",":","Shade","area","between","the","y_values","and","zero",".","-","Use","`","stacked","`","argument","for","stacked","areas",".","-","When","both","y_column","and","second_y_column","are","passed",":","Shade","area","between","the","two","y_columns",".","Args",":","data_frame","(","pandas.DataFrame",")",":","Data","source","for","the","plot",".","x_column","(","str",")",":","Column","name","to","plot","on","the","x","axis",".","y_column","(","str",")",":","Column","name","to","plot","on","the","y","axis",".","second_y_column","(","str",",","optional",")",":","Column","name","to","plot","on","the","y","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","sorting","of","the","colors",".","stacked","(","bool",",","optional",")",":","Stacked","the","areas",".","Only","applicable","with","a","single","y_column",".","Default",":","False","."]
code: def area(
      self,
      data_frame,
      x_column,
      y_column,
      second_y_column=None,
      color_column=None,
      color_order=None,
      stacked=False,
  ):
      """Area plot.
  
      Note:
          - When a single y_column is passed: Shade area between the
              y_values and zero.
          - Use `stacked` argument for stacked areas.
          - When both y_column and second_y_column are passed:
              Shade area between the two y_columns.
  
      Args:
          data_frame (pandas.DataFrame): Data source for the plot.
          x_column (str): Column name to plot on the x axis.
          y_column (str): Column name to plot on the y axis.
          second_y_column (str, optional): Column name to plot on
              the y 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 sorting of the colors.
          stacked (bool, optional): Stacked the areas.
              Only applicable with a single y_column.
              Default: False.
      """
      # Vertical option only applies to density plots
      vertical = self._chart.axes._vertical
  
      alpha = 0.2
      colors, color_values = self._get_color_and_order(
          data_frame, color_column, color_order
      )
  
      self._set_numeric_axis_default_format(
          data_frame, x_column, y_column
      )
  
      if color_column is not None:
          data_frame = (
              data_frame.set_index([x_column, color_column])
              .reindex(
                  index=pd.MultiIndex.from_product(
                      [
                          data_frame[x_column].unique(),
                          data_frame[color_column].unique(),
                      ],
                      names=[x_column, color_column],
                  )
              )
              .reset_index(drop=False)
              .fillna(0)
          )
  
      if second_y_column is None and color_column is not None:
          last_y = np.zeros(
              data_frame.groupby(color_column).size().iloc[0]
          )
  
      for color_value, color in zip(color_values, colors):
          if color_column is None:
              data = data_frame
  
              if second_y_column is None:
                  alpha = 0.8
                  y_data = np.hstack(
                      (data[y_column], np.zeros(len(data[y_column])))
                  )
              else:
                  y_data = pd.concat(
                      [data[y_column], data[second_y_column][::-1]]
                  )
  
          else:
              data = data_frame[data_frame[color_column] == color_value]
  
              if second_y_column is None:
                  y_data = np.hstack(
                      (
                          data[y_column].reset_index(drop=True),
                          last_y[::-1],
                      )
                  )
  
                  if stacked:
                      alpha = 0.8
                      next_y = last_y + data[y_column].reset_index(
                          drop=True
                      )
                      y_data = np.hstack((next_y, last_y[::-1]))
                      last_y = next_y
                      # Reverse order of vertical legends to ensure
                      # that the order is consistent with the stack order.
                      self._chart._reverse_vertical_legend = True
              else:
                  y_data = pd.concat(
                      [data[y_column], data[second_y_column][::-1]]
                  )
  
          x_data = pd.concat([data[x_column], data[x_column][::-1]])
  
          sliced_data = pd.DataFrame(
              {x_column: x_data, y_column: y_data}
          )
          cast_data = self._cast_datetime_axis(sliced_data, x_column)
          source = self._named_column_data_source(
              cast_data, series_name=color_value
          )
  
          color_value = (
              str(color_value)
              if color_value is not None
              else color_value
          )
  
          if vertical:
              self._plot_with_legend(
                  self._chart.figure.patch,
                  legend_label=color_value,
                  x=x_column,
                  y=y_column,
                  alpha=alpha,
                  source=source,
                  color=color,
                  y_range_name=self._y_range_name,
              )
  
          else:
              self._plot_with_legend(
                  self._chart.figure.patch,
                  legend_label=color_value,
                  x=y_column,
                  y=x_column,
                  alpha=alpha,
                  source=source,
                  color=color,
                  y_range_name=self._y_range_name,
              )
  
      # Set legend defaults if there are multiple series.
      if color_column is not None:
          self._chart.style._apply_settings("legend")
  
      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 4 for calling the PlotNumericXY obj's underlying member method code with example usage: obj.area(data_frame, x_column, y_column, second_y_column, color_column, color_order, stacked) and returns: self