plotnine.stat_smooth
stat_smooth(=None,
mapping=None,
data*,
="smooth",
geom="identity",
position=False,
na_rm="auto",
method=True,
se=80,
n=None,
formula=False,
fullrange=0.95,
level=0.75,
span={},
method_args**kwargs
)
Calculate a smoothed conditional mean
Parameters
mapping : aes = None

Aesthetic mappings created with aes. If specified and
inherit_aes=True
, it is combined with the default mapping for the plot. You must supply mapping if there is no plot mapping.Aesthetic Default value x y The bold aesthetics are required.
Options for computed aesthetics
"se" # Standard error of points in bin "ymin" # Lower confidence limit "ymax" # Upper confidence limit
Calculated aesthetics are accessed using the
after_stat
function. e.g.after_stat('se')
. data : DataFrame = None

The data to be displayed in this layer. If
None
, the data from from theggplot()
call is used. If specified, it overrides the data from theggplot()
call. geom : str  geom = "smooth"

The statistical transformation to use on the data for this layer. If it is a string, it must be the registered and known to Plotnine.
position : str  position = "identity"

Position adjustment. If it is a string, it must be registered and known to Plotnine.
na_rm : bool = False

If
False
, removes missing values with a warning. IfTrue
silently removes missing values. method : str  callable = "auto"

The available methods are:
"auto" # Use loess if (n<1000), glm otherwise "lm", "ols" # Linear Model "wls" # Weighted Linear Model "rlm" # Robust Linear Model "glm" # Generalized linear Model "gls" # Generalized Least Squares "lowess" # Locally Weighted Regression (simple) "loess" # Locally Weighted Regression "mavg" # Moving Average "gpr" # Gaussian Process Regressor
If a
callable
is passed, it must have the signature:def my_smoother(data, xseq, **params): # * data  has the x and y values for the model # * xseq  x values to be predicted # * params  stat parameters # # It must return a new dataframe. Below is the # template used internally by Plotnine # Input data into the model = data["x"], data["y"] x, y # Create and fit a model = Model(x, y) model = Model.fit() results # Create output data by getting predictions on # the xseq values = pd.DataFrame({ data "x": xseq, "y": results.predict(xseq)}) # Compute confidence intervals, this depends on # the model. However, given standard errors and the # degrees of freedom we can compute the confidence # intervals using the tdistribution. # # For an alternative, implement confidence interals by # the bootstrap method if params["se"]: from plotnine.utils.smoothers import tdist_ci = data["y"] # The predicted value y = 123 # Degrees of freedom df = results.stderr # Standard error stderr = params["level"] # The parameter value level = tdist_ci(y, df, stderr, level) low, high "se"] = stderr data["ymin"] = low data["ymax"] = high data[ return data
For loess smoothing you must install the
scikitmisc
package. You can install it using withpip install scikitmisc
orpip install plotnine[all]
. formula : formula_like = None

An object that can be used to construct a patsy design matrix. This is usually a string. You can only use a formula if
method
is one of lm, ols, wls, glm, rlm or gls, and in the formula you may refer to thex
andy
aesthetic variables. se : bool = True

If
True
draw confidence interval around the smooth line. n : int = 80

Number of points to evaluate the smoother at. Some smoothers like mavg do not support this.
fullrange : bool = False

If
True
the fit will span the full range of the plot. level : float = 0.95

Level of confidence to use if
se=True
. span : float = 2/3.

Controls the amount of smoothing for the loess smoother. Larger number means more smoothing. It should be in the
(0, 1)
range. method_args : dict = {}

Additional arguments passed on to the modelling method.
**kwargs : Any = {}

Aesthetics or parameters used by the
geom
.
See Also
Notes
geom_smooth
and stat_smooth
are effectively aliases, they both use the same arguments. Use geom_smooth
unless you want to display the results with a nonstandard geom.