plotnine.geoms.geom_smooth¶
- class plotnine.geoms.geom_smooth(mapping: Aes | None = None, data: DataLike | None = None, **kwargs: Any)[source]¶
A smoothed conditional mean
Usage
geom_smooth(mapping=None, data=None, stat='smooth', position='identity', na_rm=False, inherit_aes=True, show_legend=None, raster=False, legend_fill_ratio=0.5, **kwargs)
Only the
data
andmapping
can be positional, the rest must be keyword arguments.**kwargs
can be aesthetics (or parameters) used by thestat
.- Parameters:
- mapping
aes
, optional Aesthetic mappings created with
aes()
. If specified andinherit.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
alpha
0.4
color
'black'
fill
'#999999'
group
linetype
'solid'
size
1
ymax
None
ymin
None
The bold aesthetics are required.
- data
dataframe
, optional 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.- stat
str
or stat, optional (default:stat_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
or position, optional (default:position_identity
) Position adjustment. If it is a string, it must be registered and known to Plotnine.
- na_rmbool, optional (default:
False
) If
False
, removes missing values with a warning. IfTrue
silently removes missing values.- inherit_aesbool, optional (default:
True
) If
False
, overrides the default aesthetics.- show_legendbool or
dict
, optional (default:None
) Whether this layer should be included in the legends.
None
the default, includes any aesthetics that are mapped. If abool
,False
never includes andTrue
always includes. Adict
can be used to exclude specific aesthetis of the layer from showing in the legend. e.gshow_legend={'color': False}
, any other aesthetic are included by default.- rasterbool, optional (default:
False
) If
True
, draw onto this layer a raster (bitmap) object even ifthe final image is in vector format.- legend_fill_ratio
float
(default: 0.5) How much (vertically) of the legend box should be filled by the color that indicates the confidence intervals. Should be in the range [0, 1].
- mapping
Examples¶
[1]:
import pandas as pd
import numpy as np
from plotnine import (
ggplot,
aes,
geom_point,
geom_smooth,
labs
)
from plotnine.data import mpg
Smoothed conditional means¶
Aids the eye in seeing patterns in the presence of overplotting.
[2]:
mpg.head()
[2]:
manufacturer | model | displ | year | cyl | trans | drv | cty | hwy | fl | class | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | audi | a4 | 1.8 | 1999 | 4 | auto(l5) | f | 18 | 29 | p | compact |
1 | audi | a4 | 1.8 | 1999 | 4 | manual(m5) | f | 21 | 29 | p | compact |
2 | audi | a4 | 2.0 | 2008 | 4 | manual(m6) | f | 20 | 31 | p | compact |
3 | audi | a4 | 2.0 | 2008 | 4 | auto(av) | f | 21 | 30 | p | compact |
4 | audi | a4 | 2.8 | 1999 | 6 | auto(l5) | f | 16 | 26 | p | compact |
[3]:
(
ggplot(mpg, aes(x='displ', y='hwy'))
+ geom_point()
+ geom_smooth()
+ labs(x='displacement', y='horsepower')
)

[3]:
<Figure Size: (640 x 480)>
Use span
to control the "wiggliness" of the default loess smoother. The span is the fraction of points used to fit each local regression: small numbers make a wigglier curve, larger numbers make a smoother curve.
[4]:
(
ggplot(mpg, aes(x='displ', y='hwy'))
+ geom_point()
+ geom_smooth(span=.3)
+ labs(x='displacement', y='horsepower')
)

[4]:
<Figure Size: (640 x 480)>
You can remove confidence interval around smooth with se=False
:
[5]:
(
ggplot(mpg, aes(x='displ', y='hwy'))
+ geom_point()
+ geom_smooth(span=.3, se=False)
+ labs(x='displacement', y='horsepower')
)

[5]:
<Figure Size: (640 x 480)>
Instead of a loess smooth, you can use any other modelling function:
[6]:
(
ggplot(mpg, aes(x='displ', y='hwy'))
+ geom_point()
+ geom_smooth(method='lm')
+ labs(x='displacement', y='horsepower')
)

[6]:
<Figure Size: (640 x 480)>
[7]:
# Gallery Plot
(
ggplot(mpg, aes(x='displ', y='hwy', color='factor(drv)'))
+ geom_point()
+ geom_smooth(method='lm')
+ labs(x='displacement', y='horsepower')
)

[7]:
<Figure Size: (640 x 480)>