code: def render_stmt_graph(statements, reduce=True, english=False, rankdir=None,
                        agent_style=None):
      from indra.assemblers.english import EnglishAssembler
      if agent_style is None:
          agent_style = {'color': 'lightgray', 'style': 'filled',
                         'fontname': 'arial'}
      nodes = set([])
      edges = set([])
      stmt_dict = {}
      def process_stmt(stmt):
          nodes.add(str(stmt.matches_key()))
          stmt_dict[str(stmt.matches_key())] = stmt
          for sby_ix, sby_stmt in enumerate(stmt.supported_by):
              edges.add((str(stmt.matches_key()), str(sby_stmt.matches_key())))
              process_stmt(sby_stmt)
      for stmt in statements:
          process_stmt(stmt)
      nx_graph = nx.DiGraph()
      nx_graph.add_edges_from(edges)
      if reduce:
          nx_graph = nx.algorithms.dag.transitive_reduction(nx_graph)
      try:
          pgv_graph = pgv.AGraph(name='statements', directed=True,
                                 rankdir=rankdir)
      except NameError:
          logger.error('Cannot generate graph because '
                       'pygraphviz could not be imported.')
          return None
      for node in nx_graph.nodes():
          stmt = stmt_dict[node]
          if english:
              ea = EnglishAssembler([stmt])
              stmt_str = ea.make_model()
          else:
              stmt_str = str(stmt)
          pgv_graph.add_node(node,
                             label='%s (%d)' % (stmt_str, len(stmt.evidence)),
                             **agent_style)
      pgv_graph.add_edges_from(nx_graph.edges())
      return pgv_graph