code: def init_artists(self, ax, plot_args, plot_kwargs):
      # Draw edges
      color_opts = ["c", "cmap", "vmin", "vmax", "norm"]
      groups = [g for g in self._style_groups if g != "edge"]
      edge_opts = filter_styles(plot_kwargs, "edge", groups, color_opts)
      if "c" in edge_opts:
          edge_opts["array"] = edge_opts.pop("c")
      paths = plot_args["edges"]
      if self.filled:
          coll = PolyCollection
          if "colors" in edge_opts:
              edge_opts["facecolors"] = edge_opts.pop("colors")
      else:
          coll = LineCollection
      edgecolors = edge_opts.pop("edgecolors", None)
      edges = coll(paths, **edge_opts)
      if edgecolors is not None:
          edges.set_edgecolors(edgecolors)
      ax.add_collection(edges)
  
      # Draw nodes
      xs, ys = plot_args["nodes"]
      groups = [g for g in self._style_groups if g != "node"]
      node_opts = filter_styles(plot_kwargs, "node", groups)
      with warnings.catch_warnings():
          # scatter have a default cmap and with an empty array will emit this warning
          warnings.filterwarnings(
              "ignore", "No data for colormapping provided via 'c'"
          )
          nodes = ax.scatter(xs, ys, **node_opts)
  
      return {"nodes": nodes, "edges": edges}
  
imports: import warnings
  import numpy
  import param
  from matplotlib.collections import LineCollection, PolyCollection
  from ...core.data import Dataset
  from ...core.options import Cycle, abbreviated_exception
  from ...core.util import is_number, isscalar, search_indices, unique_array
  from ...util.transform import dim
  from ..mixins import ChordMixin, GraphMixin
  from ..util import get_directed_graph_paths, process_cmap
  from .element import ColorbarPlot
  from .util import filter_styles
label_desc: Use image node_id 3 for calling the GraphPlot obj's underlying member method code with example usage: obj.init_artists(ax, plot_args, plot_kwargs) and returns: dict