code: def models_correlation(results_path, models):
      try:
          if len(models) < 2:
              return
  
          names = []
          oofs = []
          for m in models:
              names += [m.get_name()]
              oofs += [m.get_out_of_folds()]
  
          corrs = np.ones((len(names), len(names)))
          for i in range(len(names)):
              for j in range(i + 1, len(names)):
                  corrs[i, j] = corrs[j, i] = AutoMLPlots.correlation(
                      oofs[i], oofs[j]
                  )
  
          figsize = (15, 15) if len(names) > 25 else (10, 10)
          fig, ax = plt.subplots(1, 1, figsize=figsize)
  
          image = ax.imshow(
              corrs,
              interpolation="nearest",
              cmap=plt.cm.get_cmap("Blues"),
              aspect="auto",
          )
          plt.colorbar(mappable=image)
  
          x_tick_marks = np.arange(len(names))
          y_tick_marks = np.arange(len(names))
          ax.set_xticks(x_tick_marks)
          ax.set_xticklabels(names, rotation=90)
          ax.set_yticks(y_tick_marks)
          ax.set_yticklabels(names)
          ax.set_title("Spearman Correlation of Models")
  
          plt.tight_layout(pad=2.0)
          plot_path = os.path.join(
              results_path, AutoMLPlots.correlation_heatmap_fname
          )
          plt.savefig(plot_path)
          plt.close("all")
      except Exception as e:
          pass
  
file_path: mljar-supervised/supervised/utils/automl_plots.py
imports: import logging
  import os
  import warnings
  import numpy
  import pandas
  import scipy
  from supervised.utils.config import LOG_LEVEL
  from supervised.utils.metric import Metric
  import warnings
  import matplotlib.pyplot
label_desc: Use image node_id 4 for calling the AutoMLPlots obj's underlying member method code with example usage: obj.models_correlation(results_path, models) without return types