docstr: Show residuals, observed or preds vs a particular Feature component
  
  Args:
      explainer (Explainer): explainer object constructed with either
                  ClassifierExplainer() or RegressionExplainer()
      title (str, optional): Title of tab or page. Defaults to
                  "Plot vs feature".
      name (str, optional): unique name to add to Component elements.
                  If None then random uuid is generated to make sure
                  it's unique. Defaults to None.
      subtitle (str): subtitle
      hide_title (bool, optional) Hide the title. Defaults to False.
      hide_subtitle (bool, optional): Hide subtitle. Defaults to False.
      hide_footer (bool, optional): hide the footer at the bottom of the component
      hide_col (bool, optional): Hide de column selector. Defaults to False.
      hide_ratio (bool, optional): Hide the  toggle. Defaults to False.
      hide_points (bool, optional): Hide group points toggle. Defaults to False.
      hide_winsor (bool, optional): Hide winsor input. Defaults to False.
      hide_cats_topx (bool, optional): hide the categories topx input. Defaults to False.
      hide_cats_sort (bool, optional): hide the categories sort selector.Defaults to False.
      hide_popout (bool, optional): hide popout button. Defaults to False.
      col ([type], optional): Initial feature to display. Defaults to None.
      display (str, {'observed', 'predicted', difference', 'ratio', 'log-ratio'} optional):
              What to display on y axis. Defaults to 'difference'.
      round (int, optional): rounding to apply to float predictions.
          Defaults to 3.
      points (bool, optional): display point cloud next to violin plot
              for categorical cols. Defaults to True
      winsor (int, 0-50, optional): percentage of outliers to winsor out of
              the y-axis. Defaults to 0.
      cats_topx (int, optional): maximum number of categories to display
          for categorical features. Defaults to 10.
      cats_sort (str, optional): how to sort categories: 'alphabet',
          'freq' or 'shap'. Defaults to 'freq'.
      plot_sample (int, optional): Instead of all points only plot a random
          sample of points. Defaults to None (=all points)
      description (str, optional): Tooltip to display when hover over
          component title. When None default text is shown.
code: def __init__(
      self,
      explainer,
      title="Plot vs feature",
      name=None,
      subtitle="Are predictions and residuals correlated with features?",
      hide_title=False,
      hide_subtitle=False,
      hide_footer=False,
      hide_col=False,
      hide_ratio=False,
      hide_points=False,
      hide_winsor=False,
      hide_cats_topx=False,
      hide_cats_sort=False,
      hide_popout=False,
      col=None,
      display="difference",
      round=3,
      points=True,
      winsor=0,
      cats_topx=10,
      cats_sort="freq",
      plot_sample=None,
      description=None,
      **kwargs,
  ):
      """Show residuals, observed or preds vs a particular Feature component
  
      Args:
          explainer (Explainer): explainer object constructed with either
                      ClassifierExplainer() or RegressionExplainer()
          title (str, optional): Title of tab or page. Defaults to
                      "Plot vs feature".
          name (str, optional): unique name to add to Component elements.
                      If None then random uuid is generated to make sure
                      it's unique. Defaults to None.
          subtitle (str): subtitle
          hide_title (bool, optional) Hide the title. Defaults to False.
          hide_subtitle (bool, optional): Hide subtitle. Defaults to False.
          hide_footer (bool, optional): hide the footer at the bottom of the component
          hide_col (bool, optional): Hide de column selector. Defaults to False.
          hide_ratio (bool, optional): Hide the  toggle. Defaults to False.
          hide_points (bool, optional): Hide group points toggle. Defaults to False.
          hide_winsor (bool, optional): Hide winsor input. Defaults to False.
          hide_cats_topx (bool, optional): hide the categories topx input. Defaults to False.
          hide_cats_sort (bool, optional): hide the categories sort selector.Defaults to False.
          hide_popout (bool, optional): hide popout button. Defaults to False.
          col ([type], optional): Initial feature to display. Defaults to None.
          display (str, {'observed', 'predicted', difference', 'ratio', 'log-ratio'} optional):
                  What to display on y axis. Defaults to 'difference'.
          round (int, optional): rounding to apply to float predictions.
              Defaults to 3.
          points (bool, optional): display point cloud next to violin plot
                  for categorical cols. Defaults to True
          winsor (int, 0-50, optional): percentage of outliers to winsor out of
                  the y-axis. Defaults to 0.
          cats_topx (int, optional): maximum number of categories to display
              for categorical features. Defaults to 10.
          cats_sort (str, optional): how to sort categories: 'alphabet',
              'freq' or 'shap'. Defaults to 'freq'.
          plot_sample (int, optional): Instead of all points only plot a random
              sample of points. Defaults to None (=all points)
          description (str, optional): Tooltip to display when hover over
              component title. When None default text is shown.
      """
      super().__init__(explainer, title, name)
  
      if self.col is None:
          self.col = self.explainer.columns_ranked_by_shap()[0]
  
      assert self.display in {
          "observed",
          "predicted",
          "difference",
          "ratio",
          "log-ratio",
      }, (
          "parameter display should in {'observed', 'predicted', 'difference', 'ratio', 'log-ratio'}"
          f" but you passed display={self.display}!"
      )
  
      if self.description is None:
          self.description = f"""
          This plot shows either residuals (difference between observed {self.explainer.target}
          and predicted {self.explainer.target}) plotted against the values of different features,
          or the observed or predicted {self.explainer.target}.
          This allows you to inspect whether the model is more wrong for particular
          range of feature values than others. 
          """
      self.popout = GraphPopout(
          "reg-vs-col-" + self.name + "popout",
          "reg-vs-col-graph-" + self.name,
          self.title,
          self.description,
      )
      self.register_dependencies(["preds", "residuals"])
  
imports: import numpy
  import pandas
  import dash
  from dash import html, dcc, Input, Output, State
  from dash.exceptions import PreventUpdate
  import dash_bootstrap_components
  from ..dashboard_methods import *
  from ..None import to_html
label_desc: Use image node_id 1 to create a new RegressionVsColComponent object from inherited base classes: ExplainerComponent with example: obj = RegressionVsColComponent(explainer, title, name, subtitle, hide_title, hide_subtitle, hide_footer, hide_col, hide_ratio, hide_points, hide_winsor, hide_cats_topx, hide_cats_sort, hide_popout, col, display, round, points, winsor, cats_topx, cats_sort, plot_sample, description)