Podemos utilizar estos datos de prueba
# datos de prueba
data <- data.frame(x = c(1, 2, 3, 4, 5),
value = c(0.7, -0.1, 0.3, -0.5,0.2))
Una forma de trabajarlo es la siguiente (deben haber muchas más). Primero calculamos si el signo es positivo o negativo con la función sign() y lo guardamos en una columna de los datos. Después calculamos el color que queremos con la función ifelse, que lo que hace es que si el valor es positivo regresa «green» y sino regresa «red». El código:
# calculando el signo de cada barra
data$signo <- sign(data$value)
# calculando el color para cada barra
data$color <- ifelse(signo >= 0, "green", "red")
Ya después utilizamos esa información en las gráficas. Dejo el código para rbase y ggplot2
# graficando con r base
barplot(data$value,
col = data$color)
# graficando con ggplot2
library(ggplot2)
ggplot(data, aes(x = x,
y = value,
fill = factor(sign(data$value))
)
) +
geom_bar(stat = 'identity') +
scale_fill_manual(values=c("red", "green")) +
theme(legend.position = "none")
Gráfica de R Base
Gráfica de ggplot2
Respuesta a pregunta de este vídeo