Highlighting individual axis labels in bold using ggplot2

后端 未结 3 2027
无人共我
无人共我 2020-12-31 10:58

I want to highlight individual axis labels in bold. I am aware of this answer by @MrFlick but I can\'t figure out how to do this a) for more than one item,

3条回答
  •  自闭症患者
    2020-12-31 11:49

    Here's a generic method to create the emboldening vector:

    colorado <- function(src, boulder) {
      if (!is.factor(src)) src <- factor(src)                   # make sure it's a factor
      src_levels <- levels(src)                                 # retrieve the levels in their order
      brave <- boulder %in% src_levels                          # make sure everything we want to make bold is actually in the factor levels
      if (all(brave)) {                                         # if so
        b_pos <- purrr::map_int(boulder, ~which(.==src_levels)) # then find out where they are
        b_vec <- rep("plain", length(src_levels))               # make'm all plain first
        b_vec[b_pos] <- "bold"                                  # make our targets bold
        b_vec                                                   # return the new vector
      } else {
        stop("All elements of 'boulder' must be in src")
      }
    }
    
    ggplot(xx, aes(x=CLONE, y=VALUE, fill=YEAR)) + 
      geom_bar(stat="identity", position="dodge") +
      facet_wrap(~TREAT) +
      theme(axis.text.x=element_text(face=colorado(xx$CLONE, c("A", "B", "E"))))
    

提交回复
热议问题