Reputation: 18657
I'm using the code below to generate a simple chart with some annotations:
require(ggplot2); data(mtcars)
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
annotate("text", x = 4, y = 25, label = "This should be bold\nand this not",
colour = "red") +
geom_vline(xintercept = 3.2, colour = "red")
On that chart I would like to apply bold font to the first part of the phrase in the text annotation:
This should be bold
but the I wish for the remaining part of the text to remain unaltered with respect to the font face and style.
Upvotes: 44
Views: 74840
Reputation: 171
Another possible solution is to employ ggtext
package :
library(ggtext)
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
geom_richtext(aes(x = 4, y = 25,
label = "**This should be bold**<br>and this not",
col = "red"),
fill = NA,
label.color = NA) +
geom_vline(xintercept = 3.2, colour = "red") +
theme(legend.position = "none")
Upvotes: 7
Reputation: 701
If you don't have a problem with splitting it up in two annotations, you could just do:
annotate("text", x = 4, y = 25, label = "This should be bold",
colour = "red", fontface =2)+
annotate("text", x = 4, y = 24, label = "and this not",
colour = "red")
Upvotes: 60
Reputation: 36104
How about using plotmath syntax with parse = TRUE
:
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
annotate("text", x = 4, y = 25,
label = 'atop(bold("This should be bold"),"this should not")',
colour = "red", parse = TRUE) +
geom_vline(xintercept = 3.2, colour = "red")
Upvotes: 44