code: def to_networkx(self):
          
          try:
              from networkx import DiGraph, set_node_attributes
          except ImportError:
              raise ImportError('You must have networkx installed to export networkx graphs')
  
          max_node = 2 * self._linkage.shape[0]
          num_points = max_node - (self._linkage.shape[0] - 1)
  
          result = DiGraph()
          for parent, row in enumerate(self._linkage, num_points):
              result.add_edge(parent, row[0], weight=row[2])
              result.add_edge(parent, row[1], weight=row[2])
  
          size_dict = {parent: row[3] for parent, row in enumerate(self._linkage, num_points)}
          set_node_attributes(result, size_dict, 'size')
  
          return result
docs: Return a NetworkX DiGraph object representing the single linkage tree.
  
          Edge weights in the graph are the distance values at which child nodes
          merge to form the parent cluster.
  
          Nodes have a `size` attribute attached giving the number of points
          that are in the cluster.