Cyrus Mohammadian Cyrus Mohammadian - 4 months ago 38
R Question

customize ggplot2 axis labels with different colors

I have a basic bar graph I've created from ggplot2. The y variable contains both positive and negative values and about half the vector of values are negative. I would like to customize the axis labels such that when the y value of that corresponding x factor is a negative, its label is red. Here's a reproducible example:

#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

What I need is a way to change the label colors of "c", "e", and "f" to the color of my choosing. I tried toggling
theme(aes(axis.text.x=element_text(colour=Air_pricier)))
but that produced an error. Thanks in advance.

Answer

Is this good enough?

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)) +
    theme(axis.text.x=element_text(colour = a))

enter image description here