class_docstr: Plotting object allows for visualization of absolute group bias metrics and
  relative disparities calculated by Aequitas Group(), Bias(), and Fairness()
  class instances.
docstr: Create treemaps to compare multiple model values for a single bias
  disparity metric across attribute groups.
  
  Adapted from https://plot.ly/python/treemaps/,
  https://gist.github.com/gVallverdu/0b446d0061a785c808dbe79262a37eea,
  and https://fcpython.com/visualisation/python-treemaps-squarify-matplotlib
  
  :param disparity_table: a disparity table. Output of bias.get_disparity or
      fairness.get_fairness function.
  :param group_metric: the metric to plot. Must be a column in the
      disparity_table.
  :param attribute_name: which attribute to plot group_metric across.
  :param color_mapping: matplotlib colormapping for treemap value boxes.
  :param label_dict: optional, dictionary of replacement labels for data.
      Default is None.
  :param title: whether to include a title in visualizations. Default is True.
  :param highlight_fairness: whether to highlight treemaps by disparity
      magnitude, or by related fairness determination.
  :param show_figure: Whether to show figure (plt.show()). Default is
      True.
  :param selected_models: which models to visualize. Default is all models in disparity_table.
  :param min_group_size: minimum proportion of total group size (all data)
      a population group must meet in order to be included in bias metric
      visualization.
  :param significance_alpha: statistical significance level. Used to
      determine visual representation of significance (number of
      asterisks on treemap).
  
  :return: A Matplotlib figure
code: def multimodel_plot_disparity(
      self,
      disparity_table,
      group_metric,
      attribute_name,
      color_mapping=None,
      label_dict=None,
      title=True,
      show_figure=True,
      highlight_fairness=True,
      selected_models=None,
      min_group_size=None,
      significance_alpha=0.05,
  ):
      """
      Create treemaps to compare multiple model values for a single bias
      disparity metric across attribute groups.
  
      Adapted from https://plot.ly/python/treemaps/,
      https://gist.github.com/gVallverdu/0b446d0061a785c808dbe79262a37eea,
      and https://fcpython.com/visualisation/python-treemaps-squarify-matplotlib
  
      :param disparity_table: a disparity table. Output of bias.get_disparity or
          fairness.get_fairness function.
      :param group_metric: the metric to plot. Must be a column in the
          disparity_table.
      :param attribute_name: which attribute to plot group_metric across.
      :param color_mapping: matplotlib colormapping for treemap value boxes.
      :param label_dict: optional, dictionary of replacement labels for data.
          Default is None.
      :param title: whether to include a title in visualizations. Default is True.
      :param highlight_fairness: whether to highlight treemaps by disparity
          magnitude, or by related fairness determination.
      :param show_figure: Whether to show figure (plt.show()). Default is
          True.
      :param selected_models: which models to visualize. Default is all models in disparity_table.
      :param min_group_size: minimum proportion of total group size (all data)
          a population group must meet in order to be included in bias metric
          visualization.
      :param significance_alpha: statistical significance level. Used to
          determine visual representation of significance (number of
          asterisks on treemap).
  
      :return: A Matplotlib figure
      """
      # requires at least 2 models
      df_models = self._check_multiple_models(
          disparity_table, method_table_name="disparity_table"
      )
  
      if not selected_models:
          selected_models = df_models
  
      plot_table = disparity_table.loc[
          disparity_table["model_id"].isin(selected_models)
      ]
  
      if group_metric + "_disparity" not in plot_table.columns:
          related_disparity = group_metric
  
      else:
          related_disparity = group_metric + "_disparity"
  
      viz_title = f"MODEL COMPARISON: {related_disparity.replace('_', ' ').upper()}"
  
      num_metrics = len(df_models)
      ncols = 3
      total_plot_width = 25
  
      fig, axs, rows, axes_to_remove = self.generate_axes(
          ncols=ncols,
          num_metrics=num_metrics,
          total_plot_width=total_plot_width,
          sharey=True,
          hspace=0.5,
          indiv_height=8,
      )
  
      # set a different distribution to be plotted in each subplot
      ax_col = -1
      ax_row = 0
      col_num = 0
  
      for model in df_models:
          model_table = plot_table.loc[plot_table["model_id"] == model]
  
          current_subplot, ax_row, ax_col = self.iterate_subplots(
              axs, ncols, rows, ax_col, ax_row
          )
  
          self.plot_disparity(
              model_table,
              group_metric=group_metric,
              attribute_name=attribute_name,
              color_mapping=color_mapping,
              ax=current_subplot,
              fig=fig,
              label_dict=label_dict,
              title=title,
              highlight_fairness=highlight_fairness,
              min_group_size=min_group_size,
              significance_alpha=significance_alpha,
          )
          if title:
              current_subplot.set_title(
                  f"{related_disparity.replace('_', ' ').upper()}: {attribute_name.upper()} (Model {model})",
                  fontsize=23,
              )
  
          col_num += 1
  
      # disable axes not being used
      if axes_to_remove > 0:
          for i in np.arange(axes_to_remove):
              axs[-1, -(i + 1)].axis("off")
  
      if title:
          plt.suptitle(f"{viz_title}", fontsize=25, fontweight="bold")
  
      if show_figure:
          plt.show()
  
      return fig
  
imports: import logging
  import math
  import numpy
  import collections
  import seaborn
  import matplotlib.pyplot
  import matplotlib.colors
  import matplotlib.cm
  from aequitas import squarify_flipped
label_desc: Use image node_id 11 for calling the Plot obj's underlying member method code with example usage: obj.multimodel_plot_disparity(disparity_table, group_metric, attribute_name, color_mapping, label_dict, title, show_figure, highlight_fairness, selected_models, min_group_size, significance_alpha) and returns: fig