class_docstr: The class representing a figure created using the ``hail.ggplot`` module.
  
  Create one by using :func:`.ggplot`.
  
  .. automethod:: to_plotly
  .. automethod:: show
  .. automethod:: write_image
code: def add_default_scales(self, aesthetic):
      for aesthetic_str, mapped_expr in aesthetic.items():
          dtype = mapped_expr.dtype
          if aesthetic_str not in self.scales:
              is_continuous = is_continuous_type(dtype)
              # We only know how to come up with a few default scales.
              if aesthetic_str == "x":
                  if is_continuous:
                      self.scales["x"] = scale_x_continuous()
                  elif is_genomic_type(dtype):
                      self.scales["x"] = scale_x_genomic(
                          reference_genome=dtype.reference_genome
                      )
                  else:
                      self.scales["x"] = scale_x_discrete()
              elif aesthetic_str == "y":
                  if is_continuous:
                      self.scales["y"] = scale_y_continuous()
                  elif is_genomic_type(dtype):
                      raise ValueError(
                          "Don't yet support y axis genomic"
                      )
                  else:
                      self.scales["y"] = scale_y_discrete()
              elif aesthetic_str == "color" and not is_continuous:
                  self.scales["color"] = scale_color_discrete()
              elif aesthetic_str == "color" and is_continuous:
                  self.scales["color"] = scale_color_continuous()
              elif aesthetic_str == "fill" and not is_continuous:
                  self.scales["fill"] = scale_fill_discrete()
              elif aesthetic_str == "fill" and is_continuous:
                  self.scales["fill"] = scale_fill_continuous()
              elif aesthetic_str == "shape" and not is_continuous:
                  self.scales["shape"] = scale_shape_auto()
              elif aesthetic_str == "shape" and is_continuous:
                  raise ValueError(
                      "The 'shape' aesthetic does not support continuous "
                      "types. Specify values of a discrete type instead."
                  )
              else:
                  if is_continuous:
                      self.scales[aesthetic_str] = ScaleContinuous(
                          aesthetic_str
                      )
                  else:
                      self.scales[aesthetic_str] = ScaleDiscrete(
                          aesthetic_str
                      )
  
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 3 for calling the GGPlot obj's underlying member method code with example usage: obj.add_default_scales(aesthetic) without return types