This is a convenience function to plot multiple pieces of text at the same time. It cannot handle mathematical expressions, though. For those, use draw_label.

draw_text(text, x = 0.5, y = 0.5, size = 14, hjust = 0.5, vjust = 0.5, ...)



A vector of Character (not expressions) specifying the string(s) to be written.


Vector of x coordinates.


Vector of y coordinates.


Font size of the text to be drawn.


(default = 0.5)


(default = 0.5)


Style parameters, such as colour, alpha, angle, size, etc.


Note that font sizes are scaled by a factor of 2.85, so sizes agree with those of the theme. This is different from geom_text in ggplot2.

By default, the x and y coordinates specify the center of the text box. Set hjust = 0, vjust = 0 to specify the lower left corner, and other values of hjust and vjust for any other relative location you want to specify.

For a full list of ... options, see geom_label.

See also


# Draw onto a 1*1 drawing surface ggdraw() + draw_text("Hello World!", x = 0.5, y = 0.5)
# # Adorn a plot from the Anscombe data set of "identical" data. library(ggplot2) p <- ggplot(anscombe, aes(x1, y1)) + geom_point() + geom_smooth() three_strings <- c("Hello World!", "to be or not to be", "over and out") p + draw_text(three_strings, x = 8:10, y = 5:7, hjust = 0)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'