personnaliser les étiquettes ggplot2 axis avec différentes couleurs

j'ai un graphique à barres de base que j'ai créé à partir de ggplot2. La variable y contient des valeurs positives et négatives et environ la moitié du vecteur des valeurs est négative. J'aimerais personnaliser les étiquettes des axes de sorte que lorsque la valeur y du facteur X correspondant est négative, son étiquette soit rouge. Voici un exemple reproductible:

#Create data
x <- c("a","b","c","d","e","f")
y <- c("10", "9","-10","11","-3","-15")
data <- data.frame(x, y)
data$y <- as.numeric(as.character(data$y))

data$category <- ifelse(as.numeric(data$y)<0, 0, 1)
data$category <- as.factor(data$category)

#Graph
library(cowplot) #theme
library(ggplot2)

ggplot(data, aes(x=x, y=y)) + 
  geom_bar(stat = "identity", aes(fill=category)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  theme(axis.text.x = element_text(colour = "black"))

enter image description here

j'ai besoin d'un moyen de changer les couleurs d'étiquettes de "c", "e" et "f" pour la couleur de mon choisir. J'ai essayé le basculement!--1-- > mais cela a produit une erreur. Merci à l'avance.

21
demandé sur Claus Wilke 2016-08-10 03:07:33

1 réponses

Vous pouvez fournir un vecteur de couleurs à l' axis.text.x option de theme():

a <- ifelse(data$category == 0, "red", "blue")

ggplot(data, aes(x = x, y = y)) + 
    geom_bar(stat = "identity", aes(fill = category)) +
    theme(axis.text.x = element_text(angle = 45, hjust = 1, colour = a))

enter image description here

31
répondu Sumedh 2018-03-23 13:58:52