p <- ggplot(mtcars) +
geom_point(aes(disp, mpg))
p
Themes take a correct plot to publication-ready: fonts, gridlines and background tuned once, reused everywhere.
Styling before the data mapping is right wastes effort; get geoms and scales correct first.
In this final chapter, we will learn to modify the appearance of all non data components of the plot such as:
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
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"))
To modify the appearance of the axis ticks, use the axis.ticks argument. You can change the color, linewidth, linetype and length of the ticks using the element_line() function as shown below.
p + theme(axis.ticks = element_line(color = 'blue', linewidth = 1.25, linetype = 2),
axis.ticks.length = unit(1, "cm"))
The axis.line argument should be used to modify the appearance of the axis lines. You can change the color, linewidth and linetype of the line using the element_line() function.
p + theme(axis.line = element_line(color = 'red', linewidth = 1.5, linetype = 3))
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
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"))
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'))
The appearance of 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', hjust = 0.1))
The position and direction of the legend can be changed using:
legend.positionlegend.directionp + theme(legend.position = "top", legend.direction = "horizontal")
ggplot(mtcars) +
geom_point(aes(disp, mpg)) +
theme_bw()
ggplot(mtcars) +
geom_point(aes(disp, mpg)) +
theme_gray()
ggplot(mtcars) +
geom_point(aes(disp, mpg)) +
theme_light()
ggplot(mtcars) +
geom_point(aes(disp, mpg)) +
theme_minimal()
ggplot(mtcars) +
geom_point(aes(disp, mpg)) +
theme_dark()
ggplot(mtcars) +
geom_point(aes(disp, mpg)) +
theme_classic()
ggplot(mtcars) +
geom_point(aes(disp, mpg)) +
theme_void()
theme_minimal() to a scatter plot.theme(text = element_text(size = 14)).Worked solutions in solutions/themes.md (attempt first).