code: def add_summary(self, problems):
      pad = self.pad
      width = self.width - 3 * self.pad
      height = self.height - 2 * self.pad
      x = y = pad
  
      self.draw_label(
          "Summary of problems",
          x=x,
          y=y,
          bold=True,
          width=width,
          font_size=self.title_font_size,
      )
      y += self.title_font_size
  
      glyphs_per_problem = defaultdict(set)
      for glyphname, problems in sorted(problems.items()):
          for problem in problems:
              glyphs_per_problem[problem["type"]].add(glyphname)
  
      if "nothing" in glyphs_per_problem:
          del glyphs_per_problem["nothing"]
  
      for problem_type in sorted(
          glyphs_per_problem,
          key=lambda x: InterpolatableProblem.severity[x],
      ):
          y += self.font_size
          self.draw_label(
              "%s: %d"
              % (problem_type, len(glyphs_per_problem[problem_type])),
              x=x,
              y=y,
              width=width,
              bold=True,
          )
          y += self.font_size
  
          for glyphname in sorted(glyphs_per_problem[problem_type]):
              if y + self.font_size > height:
                  self.show_page()
                  y = self.font_size + pad
              self.draw_label(
                  glyphname, x=x + 2 * pad, y=y, width=width - 2 * pad
              )
              y += self.font_size
  
      self.show_page()
  
imports: from .interpolatableHelpers import *
  from fontTools.ttLib import TTFont
  from fontTools.ttLib.ttGlyphSet import LerpGlyphSet
  from fontTools.pens.recordingPen import RecordingPen, DecomposingRecordingPen, RecordingPointPen
  from fontTools.pens.boundsPen import ControlBoundsPen
  from fontTools.pens.cairoPen import CairoPen
  from fontTools.pens.pointPen import SegmentToPointPen, PointToSegmentPen, ReverseContourPointPen
  from fontTools.varLib.interpolatableHelpers import PerContourOrComponentPen, SimpleRecordingPointPen
  from itertools import cycle
  from functools import wraps
  from io import BytesIO
  import cairo
  import math
  import os
  import logging
label_desc: Use image node_id 7 for calling the InterpolatablePlot obj's underlying member method code with example usage: obj.add_summary(problems) without return types