TransWikia.com

Como colocar linhas em um gráfico e barra?

Stack Overflow em Português Asked by Djavan Pereira on December 13, 2020

Gostaria de saber como insiro linhas em um gráfico de barras.

Tenho o seguinte código:

Periodo <- c("01/2020", "03/2020", "05/2020",
            "06/2020", "08/2020", "09/2020")
Valores <- c("0,08", "3,15", "4,91", "0,72", "6,21", "8,80")

teste <- data.frame(Periodo, Valores)

library(ggplot2)

ggplot(teste) + aes(x = Periodo, y = Valores) + geom_bar(stat='identity')

2 Answers

O principal problema parece ser o vetor Valores ser um vetor de classe "character", os números são strings, sem qualquer valor numérico. Isso pode ser visto pelo eixo dos yy, cujas anotações são equidistantes apesar dos valores não o serem. As diferenças de um valor para o outro não são constantes mas a diferença de alturas das barras é sempre a mesma.

Para ter o gráfico certo, tem de se transformar o vetor Valores em vetor numérico, substituindo primeiro as vírgulas por pontos.

O gráfico final mostra os dois gráficos lado a lado com o pacote gridExtra, de modo a se ver melhor a diferença.

library(ggplot2)

Periodo <- c("01/2020", "03/2020", "05/2020",
             "06/2020", "08/2020", "09/2020")
Valores <- c("0,08", "3,15", "4,91", "0,72", "6,21", "8,80")

teste <- data.frame(Periodo, Valores)

g1 <- ggplot(teste, aes(x = Periodo, y = Valores, group = 1)) + 
  geom_bar(stat='identity') +
  geom_line() +
  ggtitle("Gráfico original")

Valores <- as.numeric(sub(",", ".", Valores))
teste <- data.frame(Periodo, Valores)

g2 <- ggplot(teste, aes(x = Periodo, y = Valores, group = 1)) + 
  geom_bar(stat='identity') +
  geom_line() +
  ggtitle("Gráfico depois de 'as.numeric/sub'")

gridExtra::grid.arrange(g1, g2, nrow = 1, ncol = 2)

inserir a descrição da imagem aqui

Correct answer by Rui Barradas on December 13, 2020

Gostaria de saber como insiro linhas em um gráfico de barras.

Você pode inserir linhas utilizando o geom_line():

ggplot(teste, aes(x = Periodo, y = Valores, group = 1)) + 
  geom_bar(stat='identity') +
  geom_line()

Answered by lmonferrari on December 13, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP