9.1 Setting the Title of a Graph
9.1.2 Solution
Use 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")
9.1.3 Discussion
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)