lets_plot.geom_polygon(mapping=None, *, data=None, stat=None, position=None, show_legend=None, sampling=None, tooltips=None, map=None, map_join=None, **other_args)

Display a filled closed path defined by the vertex coordinates of individual polygons.

  • 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”.

  • data (dict or DataFrame or GeoDataFrame) – 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.

  • stat (str, default=’identity’) – The statistical transformation to use on the data for this layer, as a string.

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

  • show_legend (bool, default=True) – False - do not show legend for this layer.

  • sampling (FeatureSpec) – Result of the call to the sampling_xxx() function. Value None (or ‘none’) will disable sampling for this layer.

  • tooltips (layer_tooltips) – Result of the call to the layer_tooltips() function. Specifies appearance, style and content.

  • map (GeoDataFrame or Geocoder) – Data contains coordinates of polygon vertices on map.

  • map_join (str or list) – Keys used to join map coordinates with data. First value in pair - column/columns in data. Second value in pair - column/columns in map.

  • other_args – Other arguments passed on to the 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



geom_polygon() draws polygons, which are filled paths. Each vertex of the polygon requires a separate row in the data.

geom_polygon() understands the following aesthetics mappings:

  • x : x-axis coordinates of the vertices of the polygon.

  • y : y-axis coordinates of the vertices of the polygon.

  • alpha : transparency level of a layer. Understands numbers between 0 and 1.

  • color (colour) : color of a geometry lines. Can be continuous or discrete. For continuous value this will be a color gradient between two colors.

  • size : lines width. Defines line width.

  • linetype : type of the line. Codes and names: 0 = ‘blank’, 1 = ‘solid’, 2 = ‘dashed’, 3 = ‘dotted’, 4 = ‘dotdash’, 5 = ‘longdash’, 6 = ‘twodash’.


The data and map parameters of GeoDataFrame type support shapes Polygon and MultiPolygon.

The map parameter of Geocoder type implicitly invoke boundaries() function.


The conventions for the values of map_join parameter are as follows.

  • Joining data and GeoDataFrame object

    Data has a column named ‘State_name’ and GeoDataFrame has a matching column named ‘state’:

    • map_join=[‘State_Name’, ‘state’]

    • map_join=[[‘State_Name’], [‘state’]]

  • Joining data and Geocoder object

    Data has a column named ‘State_name’. The matching key in Geocoder is always ‘state’ (providing it is a state-level geocoder) and can be omitted:

    • map_join=’State_Name’

    • map_join=[‘State_Name’]

  • Joining data by composite key

    Joining by composite key works like in examples above, but instead of using a string for a simple key you need to use an array of strings for a composite key. The names in the composite key must be in the same order as in the US street addresses convention: ‘city’, ‘county’, ‘state’, ‘country’. For example, the data has columns ‘State_name’ and ‘County_name’. Joining with a 2-keys county level Geocoder object (the Geocoder keys ‘county’ and ‘state’ are omitted in this case):

    • map_join=[‘County_name’, ‘State_Name’]


 1import numpy as np
 2from lets_plot import *
 4n = 7
 5t = np.linspace(0, 2 * np.pi, 2 * n + 1)
 6r = np.concatenate((np.tile([1, .5], n), [1]))
 7data = {'x': r * np.cos(t), 'y': r * np.sin(t)}
 8ggplot(data, aes(x='x', y='y')) + \
 9    geom_polygon() + \
10    coord_fixed()