### Introduction

This is the fifth post in the series Elegant Data Visualization with ggplot2. In the previous post, we learnt about aesthetics. In this post, we will learn to:

• add title and subtitle to the plot
• modify axis labels
• modify axis range
• remove axis
• format axis

#### Basic Plot

Let us start with a simple scatter plot. We will continue to use the mtcars
data set and examine the relationship between displacement and miles per gallon
using `geom_point()`.

`ggplot(mtcars) + geom_point(aes(disp, mpg))`

#### Title & Subtitle

There are two ways to add title to a plot:

• `ggtitle()`
• `labs()`

#### ggtitle()

Let us explore the `ggtitle()` function first. It takes two arguments:

• label: title of the plot
• subtitle: subtitle of the plot

#### Title & Subtitle

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ggtitle(label = 'Displacement vs Mileage', subtitle = 'disp vs mpg')`

#### Axis Labels

You can add labels to the axis using:

• `xlab()`
• `ylab()`
• `labs()`

#### Axis Labels

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + xlab('Displacement') + ylab('Miles Per Gallon')`

#### Labs

The `labs()` function can be used to add the following to a plot:

• title
• subtitle
• X axis label
• Y axis label

#### Labs

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + labs(title = 'Displacement vs Mileage', subtitle = 'disp vs mpg', x = 'Displacement', y = 'Miles Per Gallon')`

#### Axis Range

In certain scenarios, you may want to modify the range of the axis. In ggplot2, we can achieve this using:

• `xlim()`
• `ylim()`
• `expand_limits()`

#### Axis Range

• `xlim()`and`ylim()`take a numeric vector of length 2 as input
• `expand_limits()`takes two numeric vectors (each of length 2), one for each axis
• in all of the above functions, the first element represents the lower limit and the second element represents the upper limit

#### X Axis

In the below example, we limit the range of the X axis between `0` and `600` using `xlim`.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + xlim(c(0, 600))`

#### Y Axis

Let us limit the range of the Y axis between `0` and `40`.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ylim(c(0, 40))`

#### Expand Limits

Let us use `expand_limits()` to limit the range of both the X and Y axis. The
first input is the range for the X axis and the second input for the Y axis. In
both the cases, we use a numeric vector of length 2 to specify the lower and
upper limit.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + expand_limits(x = c(0, 600), y = c(0, 40))`

#### Remove Axis Labels

If you want to remove the axis labels all together, use the `theme()` function.
It allows us to modify every aspect of the theme of the plot. Within `theme()`,
set the following to `element_blank()`.

• `axis.title.x`
• `axis.title.y`

#### Remove Axis Labels using theme()

`element_blank()` will remove the title of the X and Y axis.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + theme(axis.title.x = element_blank(), axis.title.y = element_blank())`

#### Format Title & Axis Labels

To format the title or the axis labels, we have to modify the theme of the plot
using the `theme()` function. We can modify:

• color
• font family
• font face
• font size
• horizontal alignment
• and angle

In addition to `theme()`, we will also use `element_text()`. It should be used
whenever you want to modify the appearance of any text element of your plot.

#### Color

In the below example, we use the `color` argument within `element_text()` to
modify the color of the title of the plot to `'blue'`.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ggtitle('Diaplacement vs Mileage') + theme(plot.title = element_text(color = 'blue'))`

#### Font Family

Let us change the font family of the plot title to `'Arial'` by using the
`family` argument.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ggtitle('Diaplacement vs Mileage') + theme(plot.title = element_text(family = 'Arial'))`

#### Font Face

The font face can be any of the following:

• `plain`
• `bold`
• `italic`
• `bold.italic`

#### Font Face

The `face` argument can be used to modify the font face of the title of the
plot.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ggtitle('Diaplacement vs Mileage') + theme(plot.title = element_text(face = 'bold'))`

#### Font Size

The size of the title of the plot can be modified using the `size` argument.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ggtitle('Diaplacement vs Mileage') + theme(plot.title = element_text(size = 8))`

#### Horizontal Alignment

To modify the horizontal alignment of the title, use the `hjust` argument. It
can take values between `0` and `1`. If the value is closer to `0`, the text
will be left-aligned and viceversa.

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ggtitle('Diaplacement vs Mileage') + theme(plot.title = element_text(hjust = 0.3))`

### Putting it all together…

#### Title

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ggtitle('Diaplacement vs Mileage') + theme(plot.title = element_text(color = 'blue', family = 'Arial', face = 'bold', size = 12, hjust = 0.5))`

#### X axis label

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + xlab('Diaplacement') + theme(axis.title.x = element_text(color = 'blue', family = 'Arial', face = 'bold', size = 8, hjust = 0.5, angle = 15))`

#### Y axis label

`ggplot(mtcars) + geom_point(aes(disp, mpg)) + ylab('Miles Per Gallon') + theme(axis.title.y = element_text(color = 'blue', family = 'Arial', face = 'italic', size = 8, vjust = 0.3, angle = 90))`

### Summary

In this post, we learnt to:

• add title and subtitle to the plot
• modify axis labels
• modify axis range
• remove axis
• format axis

### Up Next..

In the next post, we will learn to add text annotations to plots.

You are watching: Explore Discover Learn. Info created by GBee English Center selection and synthesis along with other related topics.