docstr: Shows a plot of predictions vs y.
  
  Args:
      explainer (Explainer): explainer object constructed with either
                  ClassifierExplainer() or RegressionExplainer()
      title (str, optional): Title of tab or page. Defaults to
                  "Predicted vs Actual".
      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_log_x (bool, optional): Hide the log_x toggle. Defaults to False.
      hide_log_y (bool, optional): Hide the log_y toggle. Defaults to False.
      hide_popout (bool, optional): hide popout button. Defaults to False.
      logs (bool, optional): Whether to use log axis. Defaults to False.
      log_x (bool, optional): log only x axis. Defaults to False.
      log_y (bool, optional): log only y axis. Defaults to False.
      round (int, optional): rounding to apply to float predictions.
          Defaults to 3.
      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="Predicted vs Actual",
      name=None,
      subtitle="How close is the predicted value to the observed?",
      hide_title=False,
      hide_subtitle=False,
      hide_log_x=False,
      hide_log_y=False,
      hide_popout=False,
      logs=False,
      log_x=False,
      log_y=False,
      round=3,
      plot_sample=None,
      description=None,
      **kwargs,
  ):
      """Shows a plot of predictions vs y.
  
      Args:
          explainer (Explainer): explainer object constructed with either
                      ClassifierExplainer() or RegressionExplainer()
          title (str, optional): Title of tab or page. Defaults to
                      "Predicted vs Actual".
          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_log_x (bool, optional): Hide the log_x toggle. Defaults to False.
          hide_log_y (bool, optional): Hide the log_y toggle. Defaults to False.
          hide_popout (bool, optional): hide popout button. Defaults to False.
          logs (bool, optional): Whether to use log axis. Defaults to False.
          log_x (bool, optional): log only x axis. Defaults to False.
          log_y (bool, optional): log only y axis. Defaults to False.
          round (int, optional): rounding to apply to float predictions.
              Defaults to 3.
          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)
  
      self.logs, self.log_x, self.log_y = logs, log_x, log_y
  
      if self.description is None:
          self.description = f"""
          Plot shows the observed {self.explainer.target} and the predicted 
          {self.explainer.target} in the same plot. A perfect model would have
          all the points on the diagonal (predicted matches observed). The further
          away point are from the diagonal the worse the model is in predicting
          {self.explainer.target}.
          """
  
      self.popout = GraphPopout(
          "pred-vs-actual-" + self.name + "popout",
          "pred-vs-actual-graph-" + self.name,
          self.title,
          self.description,
      )
      self.register_dependencies(["preds"])
  
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 PredictedVsActualComponent object from inherited base classes: ExplainerComponent with example: obj = PredictedVsActualComponent(explainer, title, name, subtitle, hide_title, hide_subtitle, hide_log_x, hide_log_y, hide_popout, logs, log_x, log_y, round, plot_sample, description)