Chapter 14 Themes

14.1 Introduction

In this final chapter, we will learn to modify the appearance of all non data components of the plot such as:

  • axis
  • legend
  • panel
  • plot area
  • background
  • margin
  • facets

14.2 Basic Plot

We will continue with the scatter plot examining the relationship between displacement and miles per gallon from the the mtcars data set.

p <- ggplot(mtcars) +
  geom_point(aes(disp, mpg))
p

14.3 Axis

14.3.1 Text

The axis.title.x argument can be used to modify the appearance of the X axis. In the below example, we modify the color and size of the title using the element_text() function. Remember, whenever you are trying to modify the appearance of a theme element which is a text, you must use element_text().

You can use axis.title.y to modify the Y axis title and to modify the title of both the axis together, use axis.title.

p + theme(axis.title.x = element_text(color = "red", size = 10, face = "italic"))

14.3.2 Ticks

To modify the appearance of the axis ticks, use the axis.ticks argument. You can change the color, size, linetype and length of the ticks using the element_line() function as shown below.

p + theme(axis.ticks = element_line(color = 'blue', size = 1.25, linetype = 2), 
          axis.ticks.length = unit(1, "cm"))

14.3.3 Line

The axis.line argument should be used to modify the appearance of the axis lines. You can change the color, size and linetype of the line using the element_line() function.

p + theme(axis.line = element_line(color = 'red', size = 1.5, linetype = 3))

14.4 Legend

Now, let us look at modifying the non-data components of a legend.

p <- ggplot(mtcars) +
  geom_point(aes(disp, mpg, color = factor(cyl), shape = factor(gear)))
p

14.4.1 Background

The background of the legend can be modified using the legend.background argument. You can change the background color, the border color and line type using element_rect().

p + theme(legend.background = element_rect(fill = 'gray', linetype = 3,  
          color = "black"))

14.4.2 Text

The appearance of the text can be modified using the legend.text argument. You can change the color, size and font using the element_text() function.

p + theme(legend.text = element_text(color = 'green', face = 'italic'))

14.4.3 Title

The appearance fo the title of the legend can be modified using the legend.title argument. You can change the color, size, font and alignment using element_text().

p + theme(legend.title = element_text(color = 'blue', face = 'bold'),
          legend.title.align = 0.1)

14.4.4 Position

The position and direction of the legend can be changed using:

  • legend.position
  • and legend.direction
p + theme(legend.position = "top", legend.direction = "horizontal")

14.5 Themes

14.5.1 Classic Dark on Light

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

14.5.2 Default Gray

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

14.5.3 Light

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

14.5.4 Minimal

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

14.5.5 Dark

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

14.5.6 Classic

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

14.5.7 Void (Empty)

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