Eswim
Eswim

Reputation: 131

How to italicize one category in a legend in ggplot2

For my legend in ggplot2 I have 2 categories, how do I italicize only 1 category and not the other?

As an example, consider the following plot. How can I set "Manual" in italics?

library(ggplot2)

ggplot(data = mtcars, aes(x = as.factor(am), fill = as.factor(am))) + 
  geom_bar() + 
  scale_fill_discrete(
    "Transmission",
    breaks = c(0, 1),
    labels = c("Automatic", "Manual")
  )

Created on 2020-01-01 by the reprex package (v0.3.0)

Upvotes: 13

Views: 19855

Answers (2)

Claus Wilke
Claus Wilke

Reputation: 17790

I have been working on a simpler and more flexible way to achieve this goal, via the ggtext package that enables markdown styling in ggplot. This is currently under development but should be released to CRAN soon (early 2020).

library(ggplot2) # may require: remotes::install_github("tidyverse/ggplot2")
library(ggtext)  # remotes::install_github("clauswilke/ggtext")

ggplot(data = mtcars, aes(x = as.factor(am), fill = as.factor(am))) + 
  geom_bar() + 
  scale_fill_discrete(
    "Transmission",
    breaks = c(0, 1),
    labels = c("Automatic", "*Manual*")
  ) +
  theme(legend.text = element_markdown())

Created on 2020-01-01 by the reprex package (v0.3.0)

Upvotes: 14

r.bot
r.bot

Reputation: 5424

You can use expression and italic to create italicized text on labels.

library(ggplot2)

ggplot(data = mtcars, aes(x = as.factor(am), fill = as.factor(am))) + 
  geom_bar() + 
  scale_fill_discrete(
    "Transmission",
    breaks = c(0, 1),
    labels = c("Automatic", expression(italic("Manual")))
  )

Created on 2020-01-01 by the reprex package (v0.3.0)

Upvotes: 19

Related Questions