code: def merge(self, gdefs):
          
          # group guide definitions by hash, and
          # reduce each group to a single guide
          # using the guide.merge method
          df = pd.DataFrame({
              'gdef': gdefs,
              'hash': [g.hash for g in gdefs]})
          grouped = df.groupby('hash', sort=False)
          gdefs = []
          for name, group in grouped:
              # merge
              gdef = group['gdef'].iloc[0]
              for g in group['gdef'].iloc[1:]:
                  gdef = gdef.merge(g)
              gdefs.append(gdef)
          return gdefs
docs: Merge overlapped guides
  
          For example::
  
              from plotnine import *
              gg = ggplot(mtcars, aes(y='wt', x='mpg', colour='factor(cyl)'))
              gg = gg + stat_smooth(aes(fill='factor(cyl)'), method='lm')
              gg = gg + geom_point()
              gg
  
          This would create two guides with the same hash