Formatting text and labels in ggplot or ggplot2 axis is easy. A common task when producing plots for publication is to replace default labels. Default axes labels use variable names and sometimes these are not descriptive labels. At least not when you are publishing the plots in a scientific journal. So let’s try to break down some ways to personalise ggplot plot axes.
Quick Navigation:
- The default ggplot axis labels
- Setting axes labels in ggplot with scales
- Formatting labels text for size and rotation?
For this formatting example I’ll use the movies dataset that is available in R. First thing we need to do is to load ggplot2 library and then the movies dataset
library(ggplot2) library(ggplot2movies) data(movies) |
The default ggplot axis labels
Traditionally the labels are set in the axis directly by ggplot from the aesthetics selected e.g.:
p0<-ggplot(data=movies, aes(x=year)) p0<-p0+geom_point(aes(y=rating))+geom_smooth(aes(y=rating)) p0 |
To make ggplot axes’ labels different we can use xlab and ylab. This defines x and y axis in ggplot easily.
p0+xlab('The glorious years of the movies')+ylab('The public ratings') |
Setting axes labels in ggplot with scales
p0+ scale_x_continuous('The glorious years of the movies (with scales)')+ scale_y_continuous('The public ratings (with scales)') |
Also worth investigating is the labs function that allow the change of the axes and the title e.g.:
p0+labs( x='The glorious years of the movies (with labs)', y='The public ratings (with labs)' ) |
Formatting labels text for size and rotation?
Ggplot can change axis label orientation, size and colour. To rotate the axes in ggplot you just add the angle property. To change size ou use size and for colour you uses color (Notice that a ggplot uses US-english spelling). Finally, note that you can use the face property to define if the font is bold or italic.
p0 + xlab('The Years of Cinema')+ ylab('Public Ratings')+ theme( axis.text.x=element_text(angle=90, size=8), axis.title.x=element_text(angle=10, color='red'), axis.title.y=element_text(angle=80, color='blue', face='bold', size=14) ) |
The formatting of the text in the labels is a bit counter intuitive because it uses a slightly different nomenclature. The formatting is done with the theme function and by defining element_text’s with the wanted format. In the example above the axis.text.x defines the ticks format and the axis.title.? define the labels format.
A good way to learn all the elements that a ggplot theme can format can be obtained from the help menu by entering ?theme. These examples are just scrapping the surface of what you can do but hope they can get you started in formatting text size and orientation inside ggplot plots.
Side Note: Did you noticed how crappy the movies from the 70s, 80s and 90s were?