class_docstr: Superimpose a function onto a plot
  
  {usage}
  
  Parameters
  ----------
  {common_parameters}
  fun : callable
      Function to evaluate.
  n : int, default=101
      Number of points at which to evaluate the function.
  xlim : tuple, default=None
      `x` limits for the range. The default depends on
      the `x` aesthetic. There is not an `x` aesthetic
      then the `xlim` must be provided.
  args : Optional[tuple[Any] | dict[str, Any]], default=None
      Arguments to pass to `fun`.
code: def setup_params(self, data):
      if not callable(self.params["fun"]):
          raise PlotnineError(
              "stat_function requires parameter 'fun' to be "
              "a function or any other callable object"
          )
      return self.params
  
file_path: plotnine/plotnine/stats/stat_function.py
imports: from __future__ import annotations
  import typing
  import numpy
  import pandas
  from ..doctools import document
  from ..exceptions import PlotnineError
  from ..mapping.evaluation import after_stat
  from ..scales.scale_continuous import scale_continuous
  from .stat import stat
label_desc: Use image node_id 2 for calling the stat_function obj's underlying member method code with example usage: obj.setup_params(data) and returns: self