R ggplot2 using italics and non-italics in the same category label

后端 未结 2 1626
醉梦人生
醉梦人生 2020-12-20 23:46

For my ggplot figure, I want to label categories on a barplot with the first word being italicized, while the following words are non-italicized. I want the category labels

相关标签:
2条回答
  • 2020-12-20 23:54

    I would use the glue and ggtext packages.

    library(tidyverse)
    library(ggtext)
    library(glue)
    
    data <- data.frame(
      bactname = c("Staphylococcaceae", "Moraxella", "Streptococcus", "Acinetobacter"),
      OTUname = c("OTU_1", "OTU_2", "OTU_3", "OTU_4"),
      value = c(-0.5, 0.5, 2, 3)
    )
    
    data %>% mutate(
      name = glue("*{bactname}* ({OTUname})"),
      name = fct_reorder(name, value)
    ) %>%
      ggplot(aes(name, value)) + 
      geom_col() + coord_flip() +
      theme(axis.text.y = element_markdown())
    

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

    0 讨论(0)
  • You can make a vector of expressions, and apply it to the labels argument in scale_x_discrete:

    labs <- sapply(
      strsplit(as.character(data$name), " "), 
      function(x) parse(text = paste0("italic('", x[1], "')~", x[2]))
    )
    
    ggplot(data, aes(name, value)) + 
      geom_col() + coord_flip() +
      scale_x_discrete(labels = labs)
    

    If you have spaces in your labels e.g. OTU 100, you may want to substitute a tilde for the space, e.g. OTU~100.

    0 讨论(0)
提交回复
热议问题