code: def plot_subgraph(
      self,
      graph,
      nodelist,
      colors: Union[None, str, List[str]] = "#FFA500",
      labels=None,
      edge_color="gray",
      edgelist=None,
      subgraph_edge_color="black",
      title_sentence=None,
      figname=None,
  ):
      if edgelist is None:
          edgelist = [
              (n_frm, n_to)
              for (n_frm, n_to) in graph.edges()
              if n_frm in nodelist and n_to in nodelist
          ]
      pos = nx.kamada_kawai_layout(graph)
      pos_nodelist = {k: v for k, v in pos.items() if k in nodelist}
  
      nx.draw_networkx_nodes(
          graph,
          pos,
          nodelist=list(graph.nodes()),
          node_color=colors,
          node_size=300,
      )
  
      nx.draw_networkx_edges(
          graph, pos, width=3, edge_color=edge_color, arrows=False
      )
  
      nx.draw_networkx_edges(
          graph,
          pos=pos_nodelist,
          edgelist=edgelist,
          width=6,
          edge_color=subgraph_edge_color,
          arrows=False,
      )
  
      if labels is not None:
          nx.draw_networkx_labels(graph, pos, labels)
  
      plt.axis("off")
      if title_sentence is not None:
          plt.title("\n".join(wrap(title_sentence, width=60)))
      if figname is not None:
          plt.savefig(figname)
      if self.is_show:
          plt.show()
      if figname is not None:
          plt.close()
  
imports: import os
  import math
  import copy
  import torch
  import numpy
  import networkx
  from rdkit import Chem
  from torch import Tensor
  from textwrap import wrap
  from functools import partial
  from collections import Counter
  from typing import List, Tuple, Dict
  from torch_geometric.data import Batch, Data
  from torch_geometric.utils import to_networkx
  from typing import Callable, Union, Optional
  import matplotlib.pyplot
  from torch_geometric.utils.num_nodes import maybe_num_nodes
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.datasets import MoleculeNet
  from torch_geometric.utils import remove_self_loops
  from .shapley import GnnNetsGC2valueFunc, GnnNetsNC2valueFunc, gnn_score, mc_shapley, l_shapley, mc_l_shapley, NC_mc_l_shapley, sparsity
label_desc: Use image node_id 3 for calling the PlotUtils obj's underlying member method code with example usage: obj.plot_subgraph(graph, nodelist, colors, labels, edge_color, edgelist, subgraph_edge_color, title_sentence, figname) without return types