code: def plot_data(self, proj, ax):
          
          x, y = proj
          x_data = self.ig.independent_data[x]
          y_data = self.ig.dependent_data[y]
          projected_data = np.column_stack((x_data, y_data)).T
          kde = gaussian_kde(projected_data)
  
          xx, yy = np.meshgrid(self.ig._x_points[x], self.ig._y_points[y])
          x_grid = xx.flatten()
          y_grid = yy.flatten()
  
          contour_grid = kde.pdf(np.column_stack((x_grid, y_grid)).T)
          # This is an fugly kludge, but it seems nescessary to make low density
          # areas show up.
          if self.ig.log_contour:
              contour_grid = np.log(contour_grid)
              vmin = -7
          else:
              vmin = None
          ax.contourf(xx, yy, contour_grid.reshape(xx.shape),
                      50, vmin=vmin, cmap='Blues')
docs: Creates and plots the contourplot of the original data. This is done
          by evaluating the density of projected datapoints on a grid.