code: def _filter_ticks(lims, fscale):
      """Create approximately spaced ticks between lims."""
      if fscale == "linear":
          return None, None  # let matplotlib handle it
      lims = np.array(lims)
      ticks = list()
      if lims[1] > 20 * lims[0]:
          base = np.array([1, 2, 4])
      else:
          base = np.arange(1, 11)
      for exp in range(
          int(np.floor(np.log10(lims[0]))),
          int(np.floor(np.log10(lims[1]))) + 1,
      ):
          ticks += (base * (10**exp)).tolist()
      ticks = np.array(ticks)
      ticks = ticks[(ticks >= lims[0]) & (ticks <= lims[1])]
      ticklabels = [("%g" if t < 1 else "%d") % t for t in ticks]
      return ticks, ticklabels
  
imports: import copy
  import io
  import os
  import os.path
  import warnings
  from collections import defaultdict
  from glob import glob
  from itertools import cycle
  from pathlib import Path
  import numpy
  from scipy.signal import filtfilt, freqz, group_delay, lfilter, sosfilt, sosfiltfilt
  from .._fiff.constants import FIFF
  from .._fiff.pick import _DATA_CH_TYPES_SPLIT, _picks_by_type, pick_channels, pick_info, pick_types
  from .._fiff.proj import make_projector
  from .._freesurfer import _check_mri, _mri_orientation, _read_mri_info, _reorient_image
  from ..defaults import DEFAULTS
  from ..filter import estimate_ringing_samples
  from ..fixes import _safe_svd
  from ..rank import compute_rank
  from ..surface import read_surface
  from ..transforms import _frame_to_str, apply_trans
  from ..utils import _check_option, _mask_to_onsets_offsets, _on_missing, _pl, fill_doc, get_subjects_dir, logger, verbose, warn
  from .utils import _figure_agg, _get_color_list, _prepare_trellis, _validate_type, plt_show
label_desc: Use image node_id 11 for calling a global function with example usage: _filter_ticks(lims, fscale) and returns: ticks,  ticklabels, None,  None