class_docstr: NOTE: Removed figsize and dynamix_x_axis.
class_docstr_tok: ["NOTE",":","Removed","figsize","and","dynamix_x_axis","."]
docstr: Draw figures with metrics and show
docstr_tok: ["Draw","figures","with","metrics","and","show"]
code: def send(self, logger: MainLogger):
      """Draw figures with metrics and show"""
      log_groups = logger.grouped_log_history()
  
      max_rows = math.ceil(
          (len(log_groups) + len(self.extra_plots)) / self.max_cols
      )
  
      fig, axes = plt.subplots(max_rows, self.max_cols)
      axes = axes.reshape(-1, self.max_cols)
      self._before_plots(fig, axes, len(log_groups))
  
      for group_idx, (group_name, group_logs) in enumerate(
          log_groups.items()
      ):
          ax = axes[
              group_idx // self.max_cols, group_idx % self.max_cols
          ]
          if any(len(logs) > 0 for name, logs in group_logs.items()):
              self._draw_metric_subplot(
                  ax,
                  group_logs,
                  group_name=group_name,
                  x_label=logger.step_names[group_name],
              )
  
      for idx, extra_plot in enumerate(self.extra_plots):
          ax = axes[
              (len(log_groups) + idx) // self.max_cols,
              (len(log_groups) + idx) % self.max_cols,
          ]
          extra_plot(ax, logger)
  
      self._after_plots(fig)
  
file_path: livelossplot/livelossplot/outputs/matplotlib_plot.py
imports: import math
  from typing import Tuple, List, Dict, Optional, Callable
  import warnings
  import numpy
  import matplotlib
  import matplotlib.pyplot
  from IPython.display import clear_output
  from livelossplot.main_logger import MainLogger, LogItem
  from livelossplot.outputs.base_output import BaseOutput
label_desc: Use image node_id 2 for calling the MatplotlibPlot obj's underlying member method code with example usage: obj.send(logger) without return types