ggtitle() to add a title, as shown in Figure 9.1:
library(gcookbook) # Load gcookbook for the heightweight data set ggplot(heightweight, aes(x = ageYear, y = heightIn)) + hw_plot <- geom_point() + hw_plot ggtitle("Age and Height of Schoolchildren") # Use \n for a newline + hw_plot ggtitle("Age and Height\nof Schoolchildren")
ggtitle() is equivalent to using
labs(title = "Title text").
You can add a subtitle by providing a string as the second argument of
ggtitle(). By default it will display with slightly smaller text than the main title.
+ hw_plot ggtitle("Age and Height of Schoolchildren", "11.5 to 17.5 years old")
If you want to move the title inside the plotting area, you can use one of two methods, both of which are a little bit of a hack (Figure 9.3). The first method is to use
ggtitle() with a negative
vjust value. The drawback of this method is that it still reserves blank space above the plotting region for the title.
The second method is to instead use a text annotation, setting its x position to the middle of the x range and its y position to
Inf, which places it at the top of the plotting region. This also requires a positive
vjust value to bring the text fully inside the plotting region:
# Move the title inside + hw_plot ggtitle("Age and Height of Schoolchildren") + theme(plot.title = element_text(vjust = -8)) # Use a text annotation instead + hw_plot annotate("text", x = mean(range(heightweight$ageYear)), y = Inf, label = "Age and Height of Schoolchildren", vjust = 1.5, size = 4.5)