code: def helper_for_plot_data(self, X, plot_limits, visible_dims, fixed_inputs, resolution):
      
      #work out what the inputs are for plotting (1D or 2D)
      if fixed_inputs is None:
          fixed_inputs = []
      fixed_dims = get_fixed_dims(fixed_inputs)
      free_dims = get_free_dims(self, visible_dims, fixed_dims)
  
      if len(free_dims) == 1:
          #define the frame on which to plot
          resolution = resolution or 200
          Xnew, xmin, xmax = x_frame1D(X[:,free_dims], plot_limits=plot_limits, resolution=resolution)
          Xgrid = np.zeros((Xnew.shape[0],self.input_dim))
          Xgrid[:,free_dims] = Xnew
          for i,v in fixed_inputs:
              Xgrid[:,i] = v
          x = Xgrid
          y = None
      elif len(free_dims) == 2:
          #define the frame for plotting on
          resolution = resolution or 35
          Xnew, x, y, xmin, xmax = x_frame2D(X[:,free_dims], plot_limits, resolution)
          Xgrid = np.zeros((Xnew.shape[0], self.input_dim))
          Xgrid[:,free_dims] = Xnew
          #xmin = Xgrid.min(0)[free_dims]
          #xmax = Xgrid.max(0)[free_dims]
          for i,v in fixed_inputs:
              Xgrid[:,i] = v
      else:
          raise TypeError("calculated free_dims {} from visible_dims {} and fixed_dims {} is neither 1D nor 2D".format(free_dims, visible_dims, fixed_dims))
      return fixed_dims, free_dims, Xgrid, x, y, xmin, xmax, resolution
docs: Figure out the data, free_dims and create an Xgrid for
      the prediction.
  
      This is only implemented for two dimensions for now!