docs: def _set_up_figure(self, x_mins, x_maxs, y_mins, y_maxs):
          """
          Prepare the matplotlib figure: make all the subplots; adjust their
          x and y range; plot the data; and plot an putative function.
          """
          self.fig = plt.figure()
  
          # Make room for the sliders:
          bot = 0.1 + 0.05*len(self.model.params)
          self.fig.subplots_adjust(bottom=bot)
  
          # If these are not ints, matplotlib will crash and burn with an utterly
          # vague error.
          nrows = int(np.ceil(len(self._projections)**0.5))
          ncols = int(np.ceil(len(self._projections)/nrows))
  
          # Make all the subplots: set the x and y limits, scatter the data, and
          # plot the putative function.
          self._plots = {}
  
          for plotnr, proj in enumerate(self._projections, 1):
              x, y = proj
              if Derivative(y, x) in self.model:
                  title_format = '$\\frac{{\\partial {dependant}}}{{\\partial {independant}}} = {expression}$'
              else:
                  title_format = '${dependant}({independant}) = {expression}$'
              plotlabel = title_format.format(
                  dependant=latex(y, mode='plain'),
                  independant=latex(x, mode='plain'),
                  expression=latex(self.model[y], mode='plain'))
              ax = self.fig.add_subplot(ncols, nrows, plotnr,
                                        label=plotlabel)
              ax.set_title(ax.get_label())
              ax.set_ylim(y_mins[y], y_maxs[y])
              ax.set_xlim(x_mins[x], x_maxs[x])
              ax.set_xlabel('${}$'.format(x))
              ax.set_ylabel('${}$'.format(y))
              self._plot_data(proj, ax)
              plot = self._plot_model(proj, ax)
              self._plots[proj] = plot