Vertical line


from plotnine import (
    ggplot,
    aes,
    geom_point,
    geom_vline,
    facet_grid,
    labs,
    element_rect,
    theme,
    theme_matplotlib,
    theme_set,
)
from plotnine.data import mpg

# Set default theme
# matplotlib + the background of 538
theme_set(
    theme_matplotlib()
    + theme(
        plot_background=element_rect(fill="#F0F0F0"),
        panel_background=element_rect(fill="#F0F0F0"),
        panel_spacing=0.015,
        
    )
)

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

mpg.head()
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_vline() with some data, so we start with a basic scatter plot:

(
    ggplot(mpg, aes(x="displ", y="hwy"))
    + geom_point()
    + labs(x="displacement", y="horsepower")
)

Add a vertical line to the scatter plot:

(
    ggplot(mpg, aes(x="displ", y="hwy"))
    + geom_point()
    + geom_vline(xintercept=5)  # add one vertical line
    + labs(x="displacement", y="horsepower")
)

You can add many vertical lines:

(
    ggplot(mpg, aes(x="displ", y="hwy"))
    + geom_point()
    + geom_vline(xintercept=[4, 5, 7])  # add many vertical lines using a list
    + labs(x="displacement", y="horsepower")
)

(
    ggplot(mpg, aes(x="displ", y="hwy"))
    + geom_point()
    + geom_vline(
        xintercept=[4, 5, 7],
        colour=["red", "orange", "green"],  # add colour
        size=[1, 2, 3],  # set line thickness
        linetype="dotted",  # set line type
    )
    + labs(x="displacement", y="horsepower")
)

Add vertical lines to a facet plot:

Facets with a Vertical Line

# Gallery, lines
(
    ggplot(mpg, aes(x="displ", y="hwy"))
    + geom_point()
    + geom_vline(xintercept=5, color="brown", size=1)  # add a vertical line...
    + facet_grid("drv")  # ... to a facet plot
    + labs(x="displacement", y="horsepower")
)