class plotnine.geoms.geom_text(mapping: Aes | None = None, data: DataLike | None = None, **kwargs: Any)[source]

Textual annotations


geom_text(mapping=None, data=None, stat='identity', position='identity',
          na_rm=False, inherit_aes=True, show_legend=None, raster=False,
          fontstyle='normal', nudge_x=0, fontweight='normal',
          adjust_text=None, format_string=None, path_effects=None, nudge_y=0,
          family=None, parse=False, **kwargs)

Only the data and mapping can be positional, the rest must be keyword arguments. **kwargs can be aesthetics (or parameters) used by the stat.

mappingaes, optional

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.


Default value



















The bold aesthetics are required.

Aesthetics Descriptions


Horizontal alignment. One of left, center or right.


Vertical alignment. One of top, center, bottom, baseline.

datadataframe, optional

The data to be displayed in this layer. If None, the data from from the ggplot() call is used. If specified, it overrides the data from the ggplot() call.

statstr or stat, optional (default: stat_identity)

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.

positionstr 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. If True 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 a bool, False never includes and True always includes. A dict can be used to exclude specific aesthetis of the layer from showing in the legend. e.g show_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.

parsebool (default: False)

If True, the labels will be rendered with latex.

familystr (default: None)

Font family.

fontweightint or str (default: normal)

Font weight.

fontstylestr (default: normal)

Font style. One of normal, italic or oblique

nudge_xfloat (default: 0)

Horizontal adjustment to apply to the text

nudge_yfloat (default: 0)

Vertical adjustment to apply to the text

adjust_text: dict (default: None)

Parameters to adjustText.adjust_text will repel overlapping texts. This parameter takes priority of over nudge_x and nudge_y.

adjust_text does not work well when it is used in the first layer of the plot, or if it is the only layer. For more see the documentation at .

format_stringstr (default: None)

If not None, then the text is formatted with this string using str.format() e.g:

# 2.348 -> "2.35%"
path_effectslist (default: None)

If not None, then the text will use these effects. See path_effects documentation for more details.