code: def __init__(
      self,
      df,
      features,
      feature_names,
      target=None,
      model=None,
      model_features=None,
      pred_func=None,
      n_classes=None,
      predict_kwds=None,
      chunk_size=-1,
      plot_type="interact_target",
      **kwargs,
  ):
      super().__init__(plot_type)
      _check_dataset(df, model_features)
      params = _expand_params_for_interact(kwargs)
      self.plot_type = plot_type
      self.feature_infos = [
          FeatureInfo(
              features[i],
              feature_names[i],
              df,
              params["cust_grid_points"][i],
              params["grid_types"][i],
              params["num_grid_points"][i],
              params["percentile_ranges"][i],
              params["grid_ranges"][i],
              params["show_outliers"][i],
              params["endpoints"][i],
          )
          for i in range(2)
      ]
      self.feature_cols = _make_list(
          self.feature_infos[0].col_name
      ) + _make_list(self.feature_infos[1].col_name)
      if self.plot_type == "interact_target":
          self.prepare_target_plot(df, target)
      else:
          self.prepare_predict_plot(
              model,
              df[model_features],
              pred_func,
              n_classes,
              predict_kwds,
              chunk_size,
          )
      self.prepare_feature()
      self.agg_target()
  
imports: from .info_plot_utils import TargetPlotEngine, PredictPlotEngine, InteractInfoPlotEngine
  from .utils import _make_list, _check_target, _q1, _q2, _q3, FeatureInfo, _check_dataset, _check_model, _calc_preds, _check_classes, _expand_params_for_interact
  import pandas
  from itertools import product
label_desc: Use image node_id 1 to create a new _InteractInfoPlot object from inherited base classes: _BaseInfoPlot with example: obj = _InteractInfoPlot(df, features, feature_names, target, model, model_features, pred_func, n_classes, predict_kwds, chunk_size, plot_type)