plotnine.geoms.geom_hline

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

Horizontal line

Usage

geom_hline(mapping=None, data=None, stat='identity', position='identity',
           na_rm=False, inherit_aes=False, show_legend=None, raster=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.

Parameters:
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.

Aesthetic

Default value

yintercept

alpha

1

color

'black'

group

linetype

'solid'

size

0.5

The bold aesthetics are required.

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: False)

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.

Examples

[1]:
import pandas as pd
import numpy as np

from plotnine import (
    ggplot,
    aes,
    geom_point,
    geom_hline,
    facet_grid,
    labs
)
from plotnine.data import mpg

Horizontal line

geom_hline() draws a vertical line, and is useful as a guide.

[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

It's useful to use geom_hline() with some data, so we start with a basic scatter plot:

[3]:
(
    ggplot(mpg, aes(x='displ', y='hwy'))
    + geom_point()
    + labs(x='displacement', y='horsepower')
)
../_images/geom_hline_4_0.png
[3]:
<Figure Size: (640 x 480)>

Now add a horizontal line to the scatter plot:

[4]:
(
    ggplot(mpg, aes(x='displ', y='hwy'))
    + geom_point()
    + geom_hline(yintercept = 25) # add one horizonal line
    + labs(x='displacement', y='horsepower')
)
../_images/geom_hline_6_0.png
[4]:
<Figure Size: (640 x 480)>

You can add many horizontal lines:

[5]:
(
    ggplot(mpg, aes(x='displ', y='hwy'))
    + geom_point()
    + geom_hline(yintercept = [25,35,45]) # add many horizontal lines using a list
    + labs(x='displacement', y='horsepower')
)
../_images/geom_hline_8_0.png
[5]:
<Figure Size: (640 x 480)>

You can change the look of the line:

[6]:
(
    ggplot(mpg, aes(x='displ', y='hwy'))
    + geom_point()
    + geom_hline(yintercept = 25,
                  color='yellow',    # set line colour
                  size=2,            # set line thickness
                  linetype="dashed"  # set line type
                 )
    + labs(x='displacement', y='horsepower')
)
../_images/geom_hline_10_0.png
[6]:
<Figure Size: (640 x 480)>

And you can add horizontal lines to a facet plot:

[7]:
(
    ggplot(mpg, aes(x='displ', y='hwy'))
    + geom_point()
    + geom_hline(yintercept = 25) # add a vertical line...
    + facet_grid('drv ~ .')      # ... to a facet plot
    + labs(x='displacement', y='horsepower')
)
../_images/geom_hline_12_0.png
[7]:
<Figure Size: (640 x 480)>