code: def add_focal_mechanism(self, catalogue, magnitude=None, overlay=True):
          
          longitude = catalogue.data['longitude']
          latitude = catalogue.data['latitude']
          strike = catalogue.data['strike1']
          dip = catalogue.data['dip1']
          rake = catalogue.data['rake1']
  
          if not magnitude or (magnitude < 0):
              magnitude = catalogue.data['magnitude']
              for i, mag in enumerate(magnitude):
                  color = self._select_color_mag(mag)
                  focal_mechanism = [strike[i], dip[i], rake[i]]
                  x, y = self.m(longitude[i], latitude[i])
                  self.m.plot(x, y)
                  size = mag * 10000
                  beach = Beach(focal_mechanism, linewidth=1, xy=(x, y),
                                width=size, zorder=size, facecolor=color)
                  self.ax.add_collection(beach)
                  if not overlay:
                      plt.show()
          else:
              for i in range(0, catalogue.get_number_tensors()):
                  x, y = self.m(longitude[i], latitude[i])
                  self.m.plot(x, y)
                  focal_mechanism = [strike[i], dip[i], rake[i]]
                  size = magnitude * 10000.
                  beach = Beach(focal_mechanism, linewidth=1, xy=(x, y),
                                width=size, zorder=size, facecolor='r')
                  self.ax.add_collection(beach)
                  if not overlay:
                      plt.show()
docs: Plots a the the focal mechanism based on the beachball representation.
          The focal_menchanism flag must contain: strike, dip, rake.