code: def plot(self, workflow=None, view=True, depth=-1, name=NONE, comment=NONE,
               format=NONE, engine=NONE, encoding=NONE, graph_attr=NONE,
               node_attr=NONE, edge_attr=NONE, body=NONE, node_styles=NONE,
               node_data=NONE, node_function=NONE, edge_data=NONE, max_lines=NONE,
               max_width=NONE, directory=None, sites=None, index=False):
          d = {
              'name': name, 'comment': comment, 'format': format,
              'engine': engine, 'encoding': encoding, 'graph_attr': graph_attr,
              'node_attr': node_attr, 'edge_attr': edge_attr, 'body': body,
          }
          options = {
              'digraph': {k: v for k, v in d.items() if v is not NONE} or NONE,
              'node_styles': node_styles,
              'node_data': node_data,
              'node_function': node_function,
              'edge_data': edge_data,
              'max_lines': max_lines,
              'max_width': max_width,
          }
          options = {k: v for k, v in options.items() if v is not NONE}
          from .drw import SiteMap
          from .sol import Solution
          if workflow is None and isinstance(self, Solution):
              workflow = True
          else:
              workflow = workflow or False
          sitemap = SiteMap()
          sitemap.add_items(self, workflow=workflow, depth=depth, **options)
          if view:
              import tempfile
              directory = directory or tempfile.mkdtemp()
              if sites is None:
                  sitemap.render(directory=directory, view=True, index=index)
              else:
                  sites.add(sitemap.site(directory, view=True, index=index))
          return sitemap