Gráfico de barras e histograma em R (com exemplo)

Um gráfico de barras é uma ótima maneira de exibir variáveis ​​categóricas no eixo x. Este tipo de gráfico denota dois aspectos no eixo y.

  1. O primeiro conta o número de ocorrências entre grupos.
  2. O segundo mostra uma estatística resumida (mín., máximo, média e assim por diante) de uma variável no eixo y.

Você usará o conjunto de dados mtcars com as seguintes variáveis:

  • cil: Número do cilindro do carro. Variável numérica
  • am: Tipo de transmissão. 0 para automático e 1 para manual. Variável numérica
  • mpg: Milhas por galão. Variável numérica

Como criar gráfico de barras

Para criar gráfico em R, você pode usar a biblioteca ggplot que cria gráficos prontos para publicação. A sintaxe básica desta biblioteca é:

ggplot(data, mapping = aes()) +
geometric object 

arguments: 
data: dataset used to plot the graph 
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

Neste tutorial, você está interessado no objeto geométrico geom_bar() que cria o gráfico de barras.

Gráfico de barras: contagem

Seu primeiro gráfico mostra a frequência do cilindro com geom_bar(). O código abaixo é a sintaxe mais básica.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Explicação do código

  • Você passa o conjunto de dados mtcars para o ggplot.
  • Dentro do argumento aes(), você adiciona o eixo x como uma variável de fator (cil)
  • O sinal + significa que você deseja que R continue lendo o código. Isso torna o código mais legível ao quebrá-lo.
  • Use geom_bar() para o objeto geométrico.

Saída:

Gráfico de barras: contagem

Note: certifique-se de converter as variáveis ​​em um fator, caso contrário R tratará as variáveis ​​como numéricas. Veja o exemplo abaixo.

Gráfico de barras: contagem

Personalize o gráfico

Quatro argumentos podem ser passados ​​para personalizar o gráfico:

- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

Mude a cor das barras

Você pode alterar a cor das barras. Observe que as cores das barras são todas semelhantes.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Explicação do código

  • As cores das barras são controladas pelo mapeamento aes() dentro do objeto geométrico (ou seja, não no ggplot()). Você pode alterar a cor com os argumentos de preenchimento. Aqui você escolhe a cor coral.

Saída:

Mude a cor das barras

Você pode usar este código:

grDevices::colors()

para ver todas as cores disponíveis em R. São cerca de 650 cores.

Mude a intensidade

Você pode aumentar ou diminuir a intensidade da cor das barras

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Explicação do código

  • Para aumentar/diminuir a intensidade da barra, você pode alterar o valor do alfa. Um alfa grande aumenta a intensidade e um alfa baixo reduz a intensidade. alfa varia de 0 a 1. Se for 1, a cor será a mesma da paleta. Se 0, a cor é branca. Você escolhe alfa = 0.1.

Saída:

Alterar a intensidade

Cor por grupos

Você pode alterar as cores das barras, ou seja, uma cor diferente para cada grupo. Por exemplo, a variável cyl tem três níveis, então você pode traçar o gráfico de barras com três cores.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Explicação do código

  • O argumento fill dentro de aes() permite alterar a cor da barra. Você altera a cor definindo fill = variável do eixo x. No seu exemplo, a variável do eixo x é cyl; preenchimento = fator(cil)

Saída:

Cor por grupos

Adicione um grupo nas barras

Você pode dividir ainda mais o eixo y com base em outro nível de fator. Por exemplo, você pode contar o número de transmissões automáticas e manuais com base no tipo de cilindro.

Você procederá da seguinte forma:

  • Etapa 1: crie o quadro de dados com o conjunto de dados mtcars
  • Etapa 2: Rotule a variável am com auto para transmissão automática e man para transmissão manual. Converta am e cyl como um fator para que você não precise usar factor() na função ggplot().
  • Passo 3: Trace o gráfico de barras para contar o número de transmissões por cilindro
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Você tem o conjunto de dados pronto, pode traçar o gráfico;

# Passo 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Explicação do código

  • O ggpplot() contém os dados do conjunto de dados e o aes().
  • No aes() você inclui a variável do eixo x e qual variável é necessária para preencher a barra (ou seja, sou)
  • geom_bar(): Crie o gráfico de barras

Saída:

Adicione um grupo nas barras

O mapeamento preencherá a barra com duas cores, uma para cada nível. É fácil alterar o grupo escolhendo outras variáveis ​​fatoriais no conjunto de dados.

Gráfico de barras em porcentagem

Você pode visualizar a barra em porcentagem em vez da contagem bruta.

# Gráfico de barras em porcentagem

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Explicação do código

  • Use position = “fill” no argumento geom_bar() para criar um gráfico com porcentagem no eixo y.

Saída:

Gráfico de barras em porcentagem

Barras lado a lado

É fácil traçar o gráfico de barras com a variável de grupo lado a lado.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Explicação do código

  • position=position_dodge(): Diz explicitamente como organizar as barras

Saída:

Barras lado a lado

Histograma

Na segunda parte do tutorial do gráfico de barras, você pode representar o grupo de variáveis ​​com valores no eixo y.

Seu objetivo é criar um gráfico com a média de milhas por galão para cada tipo de cilindro. Para desenhar um gráfico informativo, você seguirá estas etapas:

  • Passo 1: Crie uma nova variável com a média de milhas por galão por cilindro
  • Etapa 2: crie um histograma básico
  • Etapa 3: alterar a orientação
  • Passo 4: Mude a cor
  • Etapa 5: alterar o tamanho
  • Etapa 6: adicione rótulos ao gráfico

Passo 1) Crie uma nova variável

Você cria um quadro de dados chamado data_histogram que simplesmente retorna a média de milhas por galão pelo número de cilindros do carro. Você chama essa nova variável de média_mpg e arredonda a média com duas casas decimais.

# Passo 1

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

Passo 2) Crie um histograma básico

Você pode traçar o histograma. Não está pronto para comunicar para ser entregue ao cliente, mas nos dá uma intuição sobre a tendência.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Explicação do código

  • O aes() agora possui duas variáveis. A variável cyl refere-se ao eixo x, e a média_mpg é o eixo y.
  • Você precisa passar o argumento stat=”identidade” para referir a variável no eixo y como um valor numérico. geom_bar usa stat=”bin” como valor padrão.

Saída:

Histograma

Passo 3) Alterar a orientação

Você altera a orientação do gráfico de vertical para horizontal.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Explicação do código

  • Você pode controlar a orientação do gráfico com coord_flip().

Saída:

Histograma

Passo 4) Mude a cor

Você pode diferenciar as cores das barras de acordo com o nível do fator da variável do eixo x.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Explicação do código

  • Você pode plotar o gráfico por grupos com o mapeamento fill=cyl. R cuida automaticamente das cores com base nos níveis da variável cyl

Saída:

Histograma

Passo 5) Mude o tamanho

Para deixar o gráfico mais bonito, você reduz a largura da barra.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Explicação do código

  • O argumento width dentro de geom_bar() controla o tamanho da barra. Um valor maior aumenta a largura.
  • Observe que você armazena o gráfico no gráfico variável. Você faz isso porque a próxima etapa não alterará o código do gráfico da variável. Melhora a legibilidade do código.

Saída:

Histograma

Passo 6) Adicione rótulos ao gráfico

O último passo consiste em adicionar o valor da variável mean_mpg no rótulo.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Explicação do código

  • A função geom_text() é útil para controlar a estética do texto.
    • label=: Adicione um rótulo dentro das barras
    • mean_mpg: Use a variável mean_mpg para o rótulo
  • hapenas controla a localização do rótulo. Valores fechados em 1 exibem o rótulo na parte superior da barra e valores mais altos trazem o rótulo para a parte inferior. Se a orientação do gráfico for vertical, altere hjust para vjust.
  • color=”branco”: Altere a cor do texto. Aqui você usa a cor branca.
  • size=3: Defina o tamanho do texto.

Saída:

Histograma

Resumo

Um gráfico de barras é útil quando o eixo x é uma variável categórica. O eixo y pode ser uma contagem ou uma estatística resumida. A tabela abaixo resume como controlar o gráfico de barras com ggplot2:

Objetivo Code
Contar
ggplot(df, eas(x= factor(x1)) + geom_bar()
Conte com diferentes cores de preenchimento
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Conte com grupos, empilhados
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Conte com grupos, lado a lado
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
Conte com grupos, empilhados em%
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Valores
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")