from plotnine import ggplot, aes, geom_point, labs, geom_abline, facet_grid
from plotnine.data import mpgAB line
In [1]:
geom_abline() draws a line when the yintercept and gradient is supplied, and is useful as a guide.
In [2]:
# inspect the data
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_abline() with some data, so we start with a basic scatter plot:
In [3]:
(
ggplot(mpg, aes(x="displ", y="hwy"))
+ geom_point()
+ labs(x="displacement", y="horsepower")
)
Now layer a line over the scatter plot using geom_abline(). geom_abline() requires inputs for the slope (default slope is 1) and y-intercept (default value is [0,0]).
In [4]:
(
ggplot(mpg, aes(x="displ", y="hwy"))
+ geom_point()
+ geom_abline(
intercept=45, # set the y-intercept value
slope=-5, # set the slope value
)
+ labs(x="displacement", y="horsepower")
)
You can plot two lines on one plot:
In [5]:
(
ggplot(mpg, aes(x="displ", y="hwy"))
+ geom_point()
+ geom_abline(
intercept=[45, 45], # add many lines to a plot using a list for the y-intercepts...
slope=[-5, -7], # ... and for the slopes
)
+ labs(x="displacement", y="horsepower")
)
You can change the look of the line:
In [6]:
(
ggplot(mpg, aes(x="displ", y="hwy"))
+ geom_point()
+ geom_abline(
intercept=45,
slope=-5,
color="blue", # set line colour
size=2, # set line thickness
linetype="dashed", # set line type
)
+ labs(x="displacement", y="horsepower")
)
geom_abline() can be used with a facet plot:
In [7]:
(
ggplot(mpg, aes(x="displ", y="hwy"))
+ geom_point()
+ geom_abline(intercept=45, slope=-5) # add a line ...
+ facet_grid("drv") # ... to a facet plot.
+ labs(x="displacement", y="horsepower")
)