lets_plot.layer(geom=None, stat=None, data=None, mapping=None, position=None, **kwargs)

Create a new layer.

  • geom (str) – The geometric object to use to display the data.

  • stat (str, default=’identity’) – The statistical transformation to use on the data for this layer, as a string. Supported transformations: ‘identity’ (leaves the data unchanged), ‘count’ (counts number of points with same x-axis coordinate), ‘bin’ (counts number of points with x-axis coordinate in the same bin), ‘smooth’ (performs smoothing - linear default), ‘density’ (computes and draws kernel density estimate).

  • data (dict or DataFrame) – The data to be displayed in this layer. If None, the default, the data is inherited from the plot data as specified in the call to ggplot.

  • mapping (FeatureSpec) – Set of aesthetic mappings created by aes() function. Aesthetic mappings describe the way that variables in the data are mapped to plot “aesthetics”.

  • position (str or FeatureSpec) – Position adjustment, either as a string (‘identity’, ‘stack’, ‘dodge’, …), or the result of a call to a position adjustment function.

  • kwargs – Other arguments passed on to layer. These are often aesthetics settings, used to set an aesthetic to a fixed value, like color = “red”, fill = “blue”, size = 3 or shape = 21. They may also be parameters to the paired geom/stat.


Geom object specification.

Return type



A layer is a combination of data, stat and geom with a potential position adjustment. Usually layers are created using geom_* or stat_* calls but they can be created directly using this function.


1import numpy as np
2from lets_plot import *
4n = 50
6x = np.random.uniform(-1, 1, size=n)
7y = 25 * x ** 2 + np.random.normal(size=n)
8ggplot({'x': x, 'y': y}, aes(x='x', y='y')) + layer(geom='point')