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__(self, other):
      assert isinstance(other, FigureAttribute) or isinstance(
          other, Aesthetic
      )
  
      copied = self.copy()
      if isinstance(other, Geom):
          copied.geoms.append(other)
          copied.add_default_scales(other.aes)
      elif isinstance(other, Labels):
          copied.labels = copied.labels.merge(other)
      elif isinstance(other, CoordCartesian):
          copied.coord_cartesian = other
      elif isinstance(other, Scale):
          copied.scales[other.aesthetic_name] = other
      elif isinstance(other, Aesthetic):
          copied.aes = copied.aes.merge(other)
      elif isinstance(other, Faceter):
          copied.facet = other
      else:
          raise ValueError("Not implemented")
  
      return copied
  
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 2 for calling the GGPlot obj's underlying member method code with example usage: obj.__add__(other) and returns: copied