code: def _visualize_graph_via_networkx(
      edge_index: Tensor,
      edge_weight: Tensor,
      path: Optional[str] = None,
  ) -> Any:
      import matplotlib.pyplot as plt
      import networkx as nx
  
      g = nx.DiGraph()
      node_size = 800
  
      for node in edge_index.view(-1).unique().tolist():
          g.add_node(node)
  
      for (src, dst), w in zip(
          edge_index.t().tolist(), edge_weight.tolist()
      ):
          g.add_edge(src, dst, alpha=w)
  
      ax = plt.gca()
      pos = nx.spring_layout(g)
      for src, dst, data in g.edges(data=True):
          ax.annotate(
              "",
              xy=pos[src],
              xytext=pos[dst],
              arrowprops=dict(
                  arrowstyle="->",
                  alpha=data["alpha"],
                  shrinkA=sqrt(node_size) / 2.0,
                  shrinkB=sqrt(node_size) / 2.0,
                  connectionstyle="arc3,rad=0.1",
              ),
          )
  
      nodes = nx.draw_networkx_nodes(
          g, pos, node_size=node_size, node_color="white", margins=0.1
      )
      nodes.set_edgecolor("black")
      nx.draw_networkx_labels(g, pos, font_size=10)
  
      if path is not None:
          plt.savefig(path)
      else:
          plt.show()
  
      plt.close()
  
imports: from math import sqrt
  from typing import Any, Optional
  import torch
  from torch import Tensor
label_desc: Use image node_id 4 for calling a global function with example usage: _visualize_graph_via_networkx(edge_index, edge_weight, path) without return types