code: def plot(self, name=None):
      logger = tsutil.get_pyaf_logger()
      logger.info("START_HIERARCHICAL_PLOTTING")
      start_time = time.time()
      lAnnotations = None
      lHasModels = self.mModels is not None
      if lHasModels:
          lAnnotations = {}
          for level in sorted(self.mStructure.keys()):
              for signal in sorted(self.mStructure[level].keys()):
                  lEngine = self.mModels[level][signal]
                  lMAPE = (
                      lEngine.mSignalDecomposition.mBestModel.mForecastPerf.mMAPE
                  )
                  lMAPE = "MAPE = %.4f" % lMAPE
                  lAnnotations[signal] = [signal, lMAPE]
                  for col1 in sorted(self.mStructure[level][signal]):
                      lProp = self.mAvgHistProp[signal][col1] * 100
                      lAnnotations[str(signal) + "_" + col1] = (
                          "%2.2f %%" % lProp
                      )
      tsplot.plot_hierarchy(self.mStructure, lAnnotations, name)
      lPlotTime = time.time() - start_time
      logger.info(
          "END_HIERARCHICAL_PLOTTING_TIME_IN_SECONDS " + str(lPlotTime)
      )
  
imports: import pandas
  import numpy
  from ..None import ForecastEngine
  from .None import Options
  from .None import Perf
  from .None import Utils
  from .None import Plots
  import time
label_desc: Use image node_id 13 for calling the cSignalHierarchy obj's underlying member method code with example usage: obj.plot(name) without return types