class_docstr: Relay IR Visualizer
  
  Parameters
  ----------
  relay_mod: tvm.IRModule
      Relay IR module.
  relay_param: None | Dict[str, tvm.runtime.NDArray]
      Relay parameter dictionary. Default `None`.
  plotter: Plotter
      An instance of class inheriting from Plotter interface.
      Default is an instance of `terminal.TermPlotter`.
  parser: VizParser
      An instance of class inheriting from VizParser interface.
      Default is an instance of `terminal.TermVizParser`.
docstr: add nodes and to the graph.
  
  Parameters
  ----------
  graph : VizGraph
      a VizGraph for nodes to be added to.
  
  node_to_id : Dict[relay.expr, str]
      a mapping from nodes to an unique ID.
  
  relay_param : Dict[str, tvm.runtime.NDarray]
      relay parameter dictionary.
code: def _add_nodes(
      self, graph: VizGraph, node_to_id: Dict[relay.Expr, str]
  ):
      """add nodes and to the graph.
  
      Parameters
      ----------
      graph : VizGraph
          a VizGraph for nodes to be added to.
  
      node_to_id : Dict[relay.expr, str]
          a mapping from nodes to an unique ID.
  
      relay_param : Dict[str, tvm.runtime.NDarray]
          relay parameter dictionary.
      """
      for node in node_to_id:
          viz_node, viz_edges = self._parser.get_node_edges(
              node, self._relay_param, node_to_id
          )
          if viz_node is not None:
              graph.node(viz_node)
          for edge in viz_edges:
              graph.edge(edge)
  
file_path: tvm/python/tvm/contrib/relay_viz/__init__.py
imports: from typing import Dict
  import tvm
  from tvm import relay
  from .interface import Plotter, VizGraph, VizParser
  from .terminal import TermPlotter, TermVizParser
  from .dot import DotPlotter, DotVizParser
label_desc: Use image node_id 2 for calling the RelayVisualizer obj's underlying member method code with example usage: obj._add_nodes(graph, node_to_id) without return types