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.
- O primeiro conta o número de ocorrências entre grupos.
- 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:
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.
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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") |