ggplot2 Text Customization with ggtext | Data Visualization in R

ggplot2 is go-to R package for anyone who wants to make beautiful static visualizations in R. But most ggplot2 gplots look almost the same and little many data analysts or data scientists care about customizing it, primarily because it’s not very intuitive to do so. That’s where ggplot2 extensions come in very handy. ggtext is an R package (by Claus O. Wilke) that helps in customizing the text present in ggplot2 plots. It could be the text outside the plot canvas or the text (annotation) within the plot canvas.

Youtube - https://www.youtube.com/watch?v=bb4k6OpFRTo

Video Tutorial

Please subscribe to the channel and leave a feedback if it’s useful. It’ll really good to hear from you!

Code

library(ggtext)
library(ggplot2)

ggplot(iris) +
  geom_point(aes(x = Sepal.Length,
                 y = Petal.Length)) +
  facet_wrap(~ Species) +
  theme(
    strip.text = element_textbox(
      size = 12,
      color = "white", fill = "red", box.color = "black",
      halign = 0.5, linetype = 1, r = unit(5, "pt"), width = unit(1, "npc"),
      padding = margin(2, 0, 1, 0), margin = margin(3, 3, 3, 3)
    )
  )

library(ggtext)
library(ggplot2)

ggplot(iris) +
  geom_point(aes(x = Sepal.Length,
                 y = Petal.Length)) +
  facet_wrap(~ Species) +
  theme(
    strip.text = element_textbox(
      size = 12,
      color = "white", fill = "red", box.color = "black",
      halign = 0.5, linetype = 1, r = unit(5, "pt"), width = unit(1, "npc"),
      padding = margin(2, 0, 1, 0), margin = margin(3, 3, 3, 3)
    )
  )


library(ggplot2)
library(ggtext)

ggplot(iris) + 
  geom_point(aes(x = Sepal.Length,
                 y = Petal.Length)) +
  labs(title = "**iris analysis** <br/> 
       <i style='color:red; padding-left:-4px'>super</i>") +
  theme(
    plot.title = element_textbox_simple(
      fill = 'yellow',
      padding = margin(5.5, 5.5, 5.5, 5.5)    )
  )

ggplot(mtcars, aes(disp, mpg)) + 
  geom_point() +
  labs(
    title = "<b>Fuel economy vs. engine displacement</b><br>
    <span style = 'font-size:10pt'>Lorem ipsum *dolor sit amet,*
    consectetur adipiscing elit, **sed do eiusmod tempor incididunt** ut
    labore et dolore magna aliqua. <span style = 'color:red;'>Ut enim
    ad minim veniam,</span> quis nostrud exercitation ullamco laboris nisi
    ut aliquip ex ea commodo consequat.</span>",
    x = "displacement (in<sup>3</sup>)",
    y = "Miles per gallon (mpg)<br><span style = 'font-size:8pt'>A measure of
    the car's fuel efficiency.</span>"
  ) +
  theme(
    plot.title.position = "plot",
    plot.title = element_textbox_simple(
      size = 13,
      lineheight = 1,
      padding = margin(5.5, 5.5, 5.5, 5.5),
      margin = margin(0, 0, 5.5, 0),
      fill = "cornsilk"
    ),
    axis.title.x = element_textbox_simple(
      width = NULL,
      padding = margin(4, 4, 4, 4),
      margin = margin(4, 0, 0, 0),
      linetype = 1,
      r = grid::unit(8, "pt"),
      fill = "azure1"
    ),
    axis.title.y = element_textbox_simple(
      hjust = 0,
      orientation = "left-rotated",
      minwidth = unit(1, "in"),
      maxwidth = unit(2, "in"),
      padding = margin(4, 4, 2, 4),
      margin = margin(0, 0, 2, 0),
      fill = "lightsteelblue1"
    )
  )
 
comments powered by Disqus