class_docstr: Select no more than N intervals at nice locations.
class_docstr_tok: ["Select","no","more","than","N","intervals","at","nice","locations","."]
code: def bin_boundaries(self, vmin, vmax):
      nbins = self._nbins
      scale, offset = scale_range(vmin, vmax, nbins)
      if self._integer:
          scale = max(1, scale)
      vmin = vmin - offset
      vmax = vmax - offset
      raw_step = (vmax - vmin) / nbins
      scaled_raw_step = raw_step / scale
      best_vmax = vmax
      best_vmin = vmin
  
      for step in self._steps:
          if step < scaled_raw_step:
              continue
          step *= scale
          best_vmin = step * divmod(vmin, step)[0]
          best_vmax = best_vmin + step * nbins
          if best_vmax >= vmax:
              break
      if self._trim:
          extra_bins = int(divmod((best_vmax - vmax), step)[0])
          nbins -= extra_bins
      return np.arange(nbins + 1) * step + best_vmin + offset
  
imports: import math
  import numpy
  from .visual import CompoundVisual, updating_property
  from .line import LineVisual
  from .text import TextVisual
label_desc: Use image node_id 2 for calling the MaxNLocator obj's underlying member method code with example usage: obj.bin_boundaries(vmin, vmax) and returns: unknown