Bar graph with different colors in ggplot2

Asked

Viewed 342 times

4

I have a bar graph in the R with percentage variation, I would like the negative percentage values to be red, as in this example:

inserir a descrição da imagem aqui

But my chart is getting this way:

inserir a descrição da imagem aqui

Code I am using:

library(tidyverse)

dados <- read_delim("~/Downloads/arquivo_geral.csv", 
                    ";", escape_double = FALSE, trim_ws = TRUE)
dados <- dados[,-1]

variacaoCasosnovos <- dados %>% 
  mutate(dif_semanal = c(rep(NA, 7), diff(casosNovos, 7)),
         percentual_dif = dif_semanal / lag(casosNovos, 7)) %>% 
  select("percentual_dif")

dados <- cbind(dados, variacaoCasosnovos)

dados %>% 
  filter(estado == "SP", data > "2020-03-31") %>%
  mutate(cor = as.factor(ifelse(variacaoCasosNovos > 0, yes = 1, no = 0))) %>%
  ggplot() +
  geom_col(aes(x = data, y = variacaoCasosNovos), na.rm = TRUE, color = "black", fill = "#ADD8E6") +
  geom_hline(yintercept = 0) +
  guides(fill = FALSE) +
  labs(x = "", y = "Variação") +
  ggtitle("Variação inter-semanal de novos casos confirmados - Brasil") +
  scale_fill_manual(values = c("firebrick", "dodgerblue4"))

Database: https://covid.saude.gov.br/

1 answer

5


There are two changes that need to be made in the code. Both in the geometry of colUnas.

  1. Include within the aes(..., fill = cor); and

  2. Remove the attribute fill = "#ADD8E6".

What happens is that when you assign a value to the fill, you "erase" any determination that the can do in this aesthetic.

So we have:

dados %>% 
  filter(estado == "SP", data > as.Date("2020-03-31")) %>%
  mutate(cor = as.factor(ifelse(variacaoCasosNovos > 0, yes = 1, no = 0))) %>% 
  ggplot() +
  geom_col(aes(x = data, y = variacaoCasosNovos, fill = cor), 
           na.rm = TRUE, color = "black") +
  geom_hline(yintercept = 0) +
  guides(fill = FALSE) +
  labs(x = "", y = "Variação") +
  ggtitle("Variação inter-semanal de novos casos confirmados - Brasil") +
  scale_fill_manual(values = c("firebrick", "dodgerblue4"))

inserir a descrição da imagem aqui

Browser other questions tagged

You are not signed in. Login or sign up in order to post.