web-dev-qa-db-fra.com

personnaliser les étiquettes des axes ggplot2 avec différentes couleurs

J'ai un graphique à barres de base que j'ai créé à partir de ggplot2. La variable y contient à la fois des valeurs positives et négatives et environ la moitié du vecteur de valeurs sont négatives. Je voudrais personnaliser les étiquettes des axes de telle sorte que lorsque la valeur y de ce facteur x correspondant est négative, son étiquette est 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

Ce dont j'ai besoin, c'est d'un moyen de changer les couleurs des étiquettes "c", "e" et "f" en la couleur de mon choix. J'ai essayé de basculer theme(aes(axis.text.x=element_text(colour=Air_pricier))) mais cela a produit une erreur. Merci d'avance.

30
Cyrus Mohammadian

Vous pouvez fournir un vecteur de couleurs à l'option axis.text.x 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

44
Sumedh