code: def ggplot(table, mapping=aes()):
      """Create the initial plot object.
  
      This function is the beginning of all plots using the ``hail.ggplot`` interface. Plots are constructed
      by calling this function, then adding attributes to the plot to get the desired result.
  
      Examples
      --------
  
      Create a y = x^2 scatter plot
  
      >>> ht = hl.utils.range_table(10)
      >>> ht = ht.annotate(squared = ht.idx**2)
      >>> my_plot = hl.ggplot.ggplot(ht, hl.ggplot.aes(x=ht.idx, y=ht.squared)) + hl.ggplot.geom_point()
  
      Parameters
      ----------
      table
          The table containing the data to plot.
      mapping
          Default list of aesthetic mappings from table data to plot attributes.
  
      Returns
      -------
      :class:`.GGPlot`
      """
      assert isinstance(mapping, Aesthetic)
      return GGPlot(table, mapping)
  
imports: from plotly.subplots import make_subplots
  from pprint import pprint
  import itertools
  import hail
  from .coord_cartesian import CoordCartesian
  from .geoms import Geom, FigureAttribute
  from .labels import Labels
  from .scale import Scale, ScaleContinuous, ScaleDiscrete, scale_x_continuous, scale_x_genomic, scale_y_continuous, scale_x_discrete, scale_y_discrete, scale_color_discrete, scale_color_continuous, scale_fill_discrete, scale_fill_continuous, scale_shape_auto
  from .aes import Aesthetic, aes
  from .facets import Faceter
  from .utils import is_continuous_type, is_genomic_type, check_scale_continuity
label_desc: Use image node_id 1 for calling a global function with example usage: ggplot(table, mapping) and returns: GGPlot