Gráfico de barras e histograma em R com exemplo
⚡ Resumo Inteligente
Os gráficos de barras e histogramas em R são construídos com ggplot2, usando geom_bar() para contagens categóricas e geom_histogram() para distribuições contínuas. Este passo a passo personaliza cores, grupos e histogramas.ping, empilhamento, orientação, agrupamento e rótulos internos no conjunto de dados mtcars.

O que é um gráfico de barras em R?
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.
- A primeira contagem contabiliza o número de ocorrências em cada grupo.
- O segundo gráfico mostra uma estatística resumida (mínimo, máximo, média, etc.) de uma variável no eixo y.
Você utilizará o conjunto de dados mtcars, que possui 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 os histogramas são muito semelhantes, vale a pena esclarecer a diferença antes de escrever qualquer código.
Gráfico de barras versus histograma em R: principais diferenças
Os dois gráficos são semelhantes e são constantemente confundidos. Eles respondem a perguntas diferentes e usam objetos geométricos diferentes.
| Critérios | Gráfico de Barras | Histograma |
|---|---|---|
| Variável do eixo X | Categórico ou fatorial | Contínuo e numérico |
| O que uma barra representa | Uma categoria | Um intervalo, ou classe, de valores |
| Espaços entre as barras | Sim, as categorias são separadas. | Não, as lixeiras são adjacentes. |
| Pedido de bar | Pode ser reorganizado livremente | Corrigido pela escala numérica |
| Pergunta respondida | Como os grupos se comparam? | Como uma variável é distribuída? |
| objeto ggplot2 | barra_geométrica() | geom_histograma() |
A regra prática é a seguinte: se reordenar as barras ainda fizer sentido, você tem um gráfico de barras. Se reordená-las destruir o significado, você tem um histograma. Para resumos baseados em quartis da mesma variável contínua, use um gráfico de barras. gráfico de caixa.
Como criar um gráfico de barras em R
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()`
Este tutorial se concentra no objeto geométrico geom_bar(), que desenha o gráfico de barras, e no geom_histogram() para dados contínuos.
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()
Code Explicação
- Você passa o conjunto de dados mtcars para o ggplot.
- Dentro do argumento aes(), você define o eixo x para a variável de fator cyl.
- 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:
Observação: 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`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, 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()
Code Explicação
- As cores das barras são controladas pelo mapa aes()ping dentro do objeto geométrico (ou seja, não dentro do ggplot()). Você pode alterar a cor com os argumentos de preenchimento. Aqui, você escolheu 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()
Code Explicação
- Para aumentar/diminuir a intensidade da barra, você pode alterar o valor de alfa. Um valor alto de alfa aumenta a intensidade, e um valor baixo de alfa reduz a intensidade. O valor de alfa varia de 0 a 1. Com 1, a cor corresponde exatamente à paleta; com 0, a barra fica invisível. Aqui, você escolheu alfa = 0.5.
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()
Code Explicação
- O argumento `fill` dentro da função `aes()` altera 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`; `fill = factor(cyl)`.
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))
Com o conjunto de dados pronto, você pode plotar o gráfico:
# Passo 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code Explicação
- A chamada ggplot() recebe os dados do conjunto de dados e o mapa aes().ping.
- 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 mapaping A barra será preenchida com duas cores, uma para cada nível. É muito fácil alterar o grupo escolhendo outras variáveis de fator 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()
Code Explicação
- 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()
Code Explicação
- position=position_dodge(): Diz explicitamente como organizar as barras
Saída:
Gráfico de barras com estatística resumida
Na segunda parte do tutorial, o eixo y exibe um valor calculado em vez de uma contagem. Observe que este ainda é um gráfico de barras: um histograma propriamente dito será abordado mais adiante e utiliza um objeto geométrico diferente.
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 plotar o histograma. Ele ainda não está suficientemente refinado para ser entregue a um cliente, mas já mostra a tendência.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code Explicação
- 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ê passa `stat = “identity”` para que `geom_bar()` use a variável do eixo y como ela é, em vez de contar as linhas. O valor padrão para `geom_bar()` é `stat = “count”`.
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()
Code Explicação
- 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()
Code Explicação
- Você pode plotar o gráfico por grupos com o mapa fill=cylpingO 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()
Code Explicação
- O argumento `width` dentro de `geom_bar()` controla a espessura da barra. Um valor maior a torna mais larga.
- O gráfico é armazenado no grafo de objetos, pois a próxima etapa o reutiliza sem alterações. Armazenar gráficos intermediários mantém o código legível.
Saída:
Passo 6) Adicione rótulos ao gráfico
A última etapa adiciona o valor de mean_mpg como um rótulo dentro de cada barra.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Explicação
- 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
- O parâmetro `hjust` controla a posição do rótulo ao longo da barra. Valores próximos de 1 posicionam o rótulo perto da extremidade da barra, enquanto valores maiores o empurram para mais perto do eixo. 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:
Como ordenar e rotular barras em um gráfico de barras no R
Dois retoques finais diferenciam um rascunho de um gráfico pronto para publicação: ordenar as barras por valor e rotular os eixos corretamente.
Reordenando barras. Por padrão, o ggplot2 organiza os níveis dos fatores em ordem alfabética, o que raramente é a ordem mais informativa. Para ordenar por uma segunda variável, envolva a variável x em uma função reorder():
# Sort the bars from lowest to highest mean_mpg ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) + geom_bar(stat = "identity", fill = "coral") + theme_classic()
Adicione um sinal de menos ao prefixo da variável de ordenação, reorder(cyl, -mean_mpg), para inverter a direção.
Adicionando títulos e rótulos de eixos. A função labs() define todos os elementos de texto em uma única chamada:
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + labs(title = "Average fuel economy by cylinder count", subtitle = "mtcars dataset", x = "Number of cylinders", y = "Mean miles per gallon", fill = "Cylinders", caption = "Source: mtcars") + theme_classic()
Defina fill = NULL dentro de labs() para remover completamente o título da legenda e use theme(legend.position = “none”) para remover a legenda quando o eixo x já nomear os grupos.
Escolha suas próprias cores. Substitua a paleta padrão por uma paleta específica para que o gráfico corresponda ao estilo da sua empresa:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Como criar um histograma em R com geom_histogram()
Um histograma mostra como uma única variável contínua está distribuída. Em vez de contar categorias, o ggplot2 divide o intervalo numérico em classes e conta quantas observações se enquadram em cada uma delas.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
O R exibe uma mensagem recomendando que você escolha um número melhor de intervalos (bins), pois o valor padrão de 30 intervalos é arbitrário. Dois argumentos controlam isso:
- caixas: o número de intervalos em que o intervalo será dividido.
- largura bin: a largura de cada intervalo, expressa nas unidades da variável. Use esta opção quando as unidades forem significativas.
# Set the number of bins ggplot(mtcars, aes(x = mpg)) + geom_histogram(bins = 10, fill = "coral", color = "white") + theme_classic() # Or set the width of each bin instead ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 4, fill = "coral", color = "white") + theme_classic()
O agrupamento (binning) é a escolha mais importante em um histograma. Poucos intervalos podem ocultar estruturas reais, como um segundo pico; muitos intervalos transformam o gráfico em ruído. Experimente vários valores antes de escolher um.
Comparação de grupos. Atribua um fator para preencher e defina a posição para que as distribuições permaneçam legíveis:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
Com `position = “identity”` e um valor de `alpha` reduzido, os histogramas se sobrepõem, permitindo a comparação direta das formas. Use `position = “dodge”` se preferir visualizar os intervalos lado a lado.
Densidade em vez de contagens. Quando os grupos tiverem tamanhos diferentes, plote a densidade de forma que as áreas sejam comparáveis e sobreponha uma curva suavizada:
ggplot(mtcars, aes(x = mpg)) + geom_histogram(aes(y = after_stat(density)), bins = 10, fill = "coral", alpha = 0.6) + geom_density(color = "steelblue", linewidth = 1) + theme_classic()
Gráfico de barras e histograma em R: Code Referência
Um gráfico de barras é adequado para um eixo x categórico, onde o eixo y representa uma contagem ou uma estatística descritiva. A tabela abaixo lista a chamada do ggplot2 para cada variante abordada acima:
| Objetivo | Code |
|---|---|
| Contar |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Conte com diferentes cores de preenchimento |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Conte com grupos, empilhados |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Conte com grupos, lado a lado |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Conte com grupos, empilhados em% |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Valores (estatística resumida) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Histograma de uma variável contínua |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













