code: def plot(self, numPoints=100):
      
      fig = plt.figure()
      ax = fig.add_subplot(111, projection='3d')
  
      for feature in self._FEATURES:
  
        for _ in xrange(numPoints):
          x, y, z = tuple(self.sampleLocationFromFeature(feature))
          ax.scatter(x, y, z, marker=".")
  
      ax.set_xlabel('X')
      ax.set_ylabel('Y')
      ax.set_zlabel('Z')
  
      plt.title("{}".format(self))
      return fig, ax
docs: Plots the object in a 3D scatter.
  
      This method should be overriden when possible. This default behavior simply
      samples numPoints points from the object and plots them in a 3d scatter.