code: def _draw_axes_pce(
      ax,
      ymin,
      ymax,
      truncate_yaxis,
      truncate_xaxis,
      invert_y,
      vlines,
      tmin,
      tmax,
      unit,
      skip_axlabel=True,
      time_unit="s",
  ):
      """Position, draw, and truncate axes for plot_compare_evokeds."""
      # avoid matplotlib errors
      if ymin == ymax:
          ymax += 1e-15
      if tmin == tmax:
          tmax += 1e-9
      ax.set_xlim(tmin, tmax)
      # for dark backgrounds:
      ax.patch.set_alpha(0)
      if not np.isfinite([ymin, ymax]).all():  # nothing plotted
          return
      ax.set_ylim(ymin, ymax)
      ybounds = (ymin, ymax)
      # determine ymin/ymax for spine truncation
      trunc_y = True if truncate_yaxis == "auto" else truncate_yaxis
      if truncate_yaxis:
          if isinstance(truncate_yaxis, bool):
              # truncate to half the max abs. value and round to a nice-ish
              # number. ylims are already symmetric about 0 or have a lower bound
              # of 0, so div. by 2 should suffice.
              ybounds = np.array([ymin, ymax]) / 2.0
              precision = 0.25
              ybounds = np.round(ybounds / precision) * precision
          elif truncate_yaxis == "auto":
              # truncate to existing max/min ticks
              ybounds = _trim_ticks(ax.get_yticks(), ymin, ymax)[
                  [0, -1]
              ]
          else:
              raise ValueError(
                  f'"truncate_yaxis" must be bool or "auto", got {truncate_yaxis}'
              )
      _setup_ax_spines(
          ax,
          vlines,
          tmin,
          tmax,
          ybounds[0],
          ybounds[1],
          invert_y,
          unit,
          truncate_xaxis,
          trunc_y,
          skip_axlabel,
          time_unit=time_unit,
      )
  
imports: from copy import deepcopy
  from functools import partial
  from itertools import cycle
  from numbers import Integral
  import numpy
  from .._fiff.pick import _DATA_CH_TYPES_SPLIT, _PICK_TYPES_DATA_DICT, _VALID_CHANNEL_TYPES, _picks_to_idx, channel_indices_by_type, channel_type, pick_info
  from ..defaults import _handle_default
  from ..fixes import _is_last_row
  from ..utils import _check_ch_locs, _check_if_nan, _clean_names, _is_numeric, _pl, _to_rgb, _validate_type, fill_doc, logger, verbose, warn
  from .topo import _plot_evoked_topo
  from .topomap import _check_sphere, _draw_outlines, _get_pos_outlines, _make_head_outlines, _prepare_topomap, _prepare_topomap_plot, _set_contour_locator, plot_topomap
  from .utils import DraggableColorbar, _check_cov, _check_delayed_ssp, _check_option, _check_time_unit, _draw_proj_checkbox, _get_cmap, _get_color_list, _make_combine_callable, _plot_masked_image, _prepare_joint_axes, _process_times, _prop_kw, _set_title_multiple_electrodes, _set_window_title, _setup_ax_spines, _setup_cmap, _setup_plot_projector, _setup_vmin_vmax, _triage_rank_sss, _trim_ticks, _validate_if_list_of_axes, plt_show
label_desc: Use image node_id 31 for calling a global function with example usage: _draw_axes_pce(ax, ymin, ymax, truncate_yaxis, truncate_xaxis, invert_y, vlines, tmin, tmax, unit, skip_axlabel, time_unit) without return types