code: def make(self):
      import matplotlib.pyplot as plt
  
      fig, axes = plt.subplots(
          self.n_rows,
          self.n_columns,
      )
      index = np.arange(self.n_groups)
      bar_width = 0.75 / self.n_bars
  
      for row in range(self.n_rows):
          for column in range(self.n_columns):
              if self.n_columns == self.n_rows == 1:
                  ax = axes
              elif self.n_columns == 1:
                  ax = axes[row]
              else:
                  ax = axes[row, column]
              target_idx = self._get_target(
                  plot_idx=0, row=row, column=column
              )
              for bar in range(self.n_bars):
                  values = [
                      self.get_plot_value(
                          row=row,
                          column=column,
                          group_idx=group,
                          bar_idx=bar,
                      )
                      for group in range(self.n_groups)
                  ]
                  label = self.bar_values[bar]
                  ax.bar(
                      index + bar_width * bar,
                      values,
                      bar_width,
                      label=label,
                  )
  
              ax.set_xlabel(self._get_param_for_plotdim("group"))
              ax.set_ylabel(self.target_values[target_idx])
              ax.set_xticks(
                  index + bar_width, map(str, self.group_values)
              )
      return fig
  
file_path: mtscomp/benchmark.py
imports: from itertools import product, repeat
  from pathlib import Path
  import time
  from tabulate import tabulate
  import numpy
  from joblib import Memory
  from tqdm import tqdm
  from mtscomp import compress, decompress, load_raw_data
label_desc: Use image node_id 6 for calling the PlotParams obj's underlying member method code with example usage: obj.make() and returns: fig