Pular para o conteúdo principal
InicioTutoriaisProgramação R

Como fazer um histograma ggplot2 no R

Aprenda a criar um histograma ggplot2 no R. Crie histogramas no R com base na gramática dos gráficos.
abr. de 2024  · 15 min leer

datarhys_an_absurdist_oil_painting_of_a_humanoid_robot_assembli_43ea48e7-758d-48ef-9154-2c1d956ec52a.png

Neste tutorial, visualizaremos as distribuições de dados plotando histogramas usando a biblioteca ggplot2 no R. A ggplot2 é a biblioteca de plotagem mais popular do R e faz parte do ecossistema da biblioteca tidyverse. A biblioteca facilita a criação de visualizações complexas e de excelente aparência em uma abordagem intuitiva de criação de camadas. Você pode aprender a criar um histograma com o R básico em um tutorial separado. 

Os histogramas são visualizações que mostram distribuições de frequência em variáveis contínuas (numéricas). Os histogramas nos permitem ver o número de observações nos dados dentro dos intervalos que a variável contínua abrange.

Dados de habitação

Primeiro, precisaremos importar a biblioteca ggplot2 usando a função library. Isso trará todas as diferentes funções internas disponíveis na biblioteca ggplot2. Se ainda não tiver instalado o ggplot2, você precisará instalá-lo executando o comando install.packages(). Faremos o mesmo com a biblioteca readr, que nos permitirá ler um arquivo csv, e com a dplyr, que nos permite trabalhar mais facilmente com os dados que lemos. 

install.packages("ggplot2")
install.packages("readr")
install.packages("dplyr")
library(ggplot2)
library(readr)
library(dplyr)

Para este tutorial, usaremos esse conjunto de dados de habitação que inclui detalhes sobre diferentes listagens de casas, inclusive o tamanho da casa, o número de cômodos, o preço e as informações de localização. 

Podemos ler os dados usando a função read_csv(). Podemos lê-lo diretamente do URL ou fazer o download do arquivo csv em um diretório e lê-lo em nosso armazenamento local. O primeiro atributo de read_csv() é o local dos dados, e o atributo col_select nos permite escolher as colunas nas quais estamos interessados. 

home_data <- read_csv(
    "https://raw.githubusercontent.com/rashida048/Datasets/master/home_data.csv",
    col_select = c(price, condition)
)

Em seguida, podemos examinar as primeiras linhas de dados usando a função head() 

head(home_data)

image6.png

Como fazer um histograma com o ggplot2 

Agora podemos criar o histograma. Independentemente do tipo de gráfico que estamos criando no ggplot2, sempre começamos com a função ggplot(), que cria uma tela para adicionar elementos de gráfico. Ele usa dois parâmetros.

  • O primeiro argumento é um quadro de dados. Aqui, queremos usar home_data.
  • O segundo argumento é um mapeamento de colunas no quadro de dados para a estética do gráfico. Esse mapeamento deve chamar a função aes(). Aqui, mapeamos a coluna de preço para o eixo x.

Até o momento, nosso código é

ggplot(data = home_data, aes(x = price))

Isso, por si só, não atrairá nada de útil. Para transformar isso em um histograma, adicionamos uma geometria de histograma usando geom_histogram().

ggplot(data = home_data, aes(x = price)) +
  geom_histogram()

image11.png

Adicionar estatísticas descritivas ao histograma usando geom_vline()

Podemos adicionar estatísticas descritivas ao nosso gráfico usando a função geom_vline(). Isso adiciona uma linha geométrica vertical ao gráfico.

Primeiro, calculamos uma estatística descritiva, nesse caso, o preço médio, usando o summarize() do dplyr.

price_stats <- home_data |>
summarize(mean_price = mean(price))
price_stats
# A tibble: 1 × 1
  mean_price
      <dbl>
1    540088.

A função usa o parâmetro xintercept e os atributos opcionais color e linewidth para personalizar a cor e o tamanho das linhas, respectivamente. Adicionaremos uma linha média usando o sinal de mais, como fizemos na seção anterior.

ggplot(home_data, aes(x = price)) +
    geom_histogram() +
    geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2)

Observe que nas funções geom_, o mapeamento e os argumentos de dados são trocados em comparação com ggplot().

image8.png

Plotagem de densidades de probabilidade em vez de contagens

Para adicionar uma linha de densidade de probabilidade ao histograma, primeiro alteramos o eixo y para que seja dimensionado de acordo com a densidade. Na função aes(), definimos y como after_stat(density)

Em seguida, podemos adicionar uma camada de densidade ao nosso gráfico usando a função geom_density(). Aqui, definimos o atributo color como verde e o atributo linewidth como 2.

ggplot(home_data, aes(x = price, y = after_stat(density))) +
    geom_histogram() +
    geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2) +
    geom_density(color = "green", linewidth = 2)

image4.png

Observe que os números no eixo y foram alterados.

Como você está começando a ver, a sintaxe do ggplot2 é simples, mas muito poderosa. Podemos adicionar várias camadas sobre um gráfico simples para aumentar sua complexidade com a lógica aditiva e algumas funções internas bem definidas.  

Atualizar o Binning usando Bin

Podemos atualizar o binning do nosso histograma ggplot2 usando o atributo bin. Definimos atributos de compartimento iguais ao número de compartimentos que queremos exibir em nosso gráfico. Isso nos ajudará a ver dados mais ou menos granulares em nosso histograma. 

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(bins = 100)

image12.png

Também podemos definir a largura do compartimento manualmente usando o atributo binwidth de geom_histogram().

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(binwidth = 50000)

image5.png

Por fim, você pode alinhar os limites usando os atributos center ou boundary. Se quiser que os limites dos compartimentos caiam em múltiplos específicos, você pode usar esses atributos (somente um pode ser usado por vez). Para garantir que os compartimentos terminem em valores inteiros, defina o atributo igual a 1.   

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(boundary = 1)

image7.png

Personalizar a cor do histograma

Nesta seção, alteraremos as cores do histograma. Podemos personalizar a cor dos contornos de cada barra usando o atributo color, e podemos alterar o preenchimento das barras usando o atributo fill de geom_histogram(). Preencheremos as barras com azul e mudaremos a cor do contorno para branco. 

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(color = "white", fill = "blue")

image9.png

Personalizar a cor do histograma do ggplot2 com base em grupos 

Você pode personalizar as cores das barras do histograma. 

Alterar a estética de fill (dentro de aes() a função) alterará as cores internas das barras com base no valor de uma variável no conjunto de dados. Essa variável deve ser categórica (um fator) em vez de números inteiros, portanto, podemos convertê-la usando a função factor(). Para este exemplo, examinaremos a variável de condição, um valor que varia de 1 (condição ruim) a 5 (condição excelente). 

home_data <- home_data |>
    mutate(condition = factor(condition))

ggplot(data = home_data, aes(x = price, fill = condition)) +
    geom_histogram()

image1.png

Adicionar rótulos e títulos usando Labs

Em seguida, adicionamos títulos e rótulos ao nosso gráfico usando a função labs(). Definimos os atributos x, y e title como nossos rótulos desejados. 

ggplot(data = home_data, aes(x = price)) +
  geom_histogram() +
  labs(x ='Price (USD)', y='Number of Listings', title = 'Housing Price Distributions')

image13.png

Definição dos limites do eixo x usando xlim()

Podemos definir os limites do eixo x do nosso gráfico usando a função xlim()  para ampliar os dados nos quais estamos interessados. Por exemplo, às vezes é útil focar na parte central da distribuição em vez de na cauda longa que vemos atualmente quando visualizamos o gráfico inteiro. 

Também é possível alterar os limites do eixo y (usando ylim()), mas isso é menos útil para histogramas, pois os valores calculados automaticamente são quase sempre ideais.

Vamos nos concentrar nos preços entre US$ 0 e US$ 2 milhões.

ggplot(home_data, aes(x = price)) +
    geom_histogram(bins = 100) +
    xlim(0, 2000000)

image3.png

Alterar posição da legenda 

Se quisermos mover a legenda em nosso gráfico, por exemplo, quando visualizarmos a condição em cores diferentes, poderemos usar a função theme() e o atributo legend.position. Os valores que legend.position assume são “bottom”, “top”, “right”, ou “bottom”. Você também pode passar as coordenadas nas quais gostaria que a legenda estivesse usando c(x, y).

ggplot(home_data, aes(x = price, fill = condition)) +
    geom_histogram() +
    theme(legend.position = "bottom")

Uso de facetas no ggplot2

Por fim, podemos visualizar os dados em diferentes grupos em gráficos separados usando facetas. Isso dividirá a visualização em vários subplots para cada categoria. Isso pode ser feito usando a função facet_grid(). A seguir, visualizaremos as distribuições de preços por diferentes valores de condição. 

ggplot(home_data, aes(x = price)) +
  geom_histogram() +  facet_grid(vars(condition))

O facetamento é abordado em mais detalhes no tutorial Facets for ggplot in R.

image2.png

Conclusão

Para criar um histograma no ggplot2, você começa construindo a base com a função ggplot() e os parâmetros data e aes(). Em seguida, você adiciona as camadas do gráfico, começando com o tipo de função do gráfico. Para um histograma, use a função geom_histogram(). Em seguida, você pode adicionar outras camadas de personalização, como labs() para títulos de eixos e gráficos, xlim() e ylim() para definir os intervalos dos eixos e theme() para mover a legenda e fazer outras personalizações visuais no gráfico. 

O ggplot2 facilita a criação de visualizações no R. Você pode criar gráficos simples ou mais complexos, tudo com a mesma sintaxe aditiva simples. É a biblioteca de gráficos mais popular do R.

Leve-o para o próximo nível

O ggplot2 é abordado em profundidade na trilha de habilidades Visualização de dados em R, começando com Introdução à visualização de dados com ggplot2. Você pode aprender a combinar visualizações de dados ggplot2 com outras ferramentas do tidyverse na trilha de habilidades Tidyverse Fundamentals with R. Para obter uma referência útil sobre tudo o que você acabou de aprender, faça o download de uma cópia da folha de dicas do ggplot2.

 

Temas

Saiba mais sobre o R

Course

Intermediate Data Visualization with ggplot2

4 hr
43.8K
Learn to use facets, coordinate systems and statistics in ggplot2 to create meaningful explanatory plots.
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

blog

Explorando 12 das melhores ferramentas de visualização de dados em 2023 com exemplos

Há muitas ferramentas de visualização de dados disponíveis. Neste artigo, preparamos uma lista abrangente de algumas das ferramentas de visualização de dados mais úteis na ciência de dados.

Javier Canales Luna

17 min

blog

O que é o R? - Uma introdução à potência da computação estatística

Aprenda tudo o que você precisa saber sobre a linguagem de programação R e descubra por que ela é a linguagem mais usada na ciência de dados.
Summer Worsley's photo

Summer Worsley

18 min

R Project

blog

As 8 principais ideias de projetos de R para 2023

Descubra o que é o R e todos os benefícios de usá-lo, além de dar exemplos e novas ideias para um projeto.
Elena Kosourova 's photo

Elena Kosourova

16 min

tutorial

Tutorial do Chroma DB: Um guia passo a passo

Com o Chroma DB, você pode gerenciar facilmente documentos de texto, converter texto em embeddings e fazer pesquisas de similaridade.
Abid Ali Awan's photo

Abid Ali Awan

10 min

tutorial

Guia do cientista de dados para processamento de sinais

Descubra insights acionáveis ocultos em dados de sinais complexos filtrando ruídos, escolhendo visualizações apropriadas, encontrando padrões no domínio do tempo e da frequência e muito mais usando o processamento de sinais.
Amberle McKee's photo

Amberle McKee

25 min

tutorial

Introdução a modelos não lineares e percepções usando o R

Descubra as complexidades dos modelos não lineares em comparação com os modelos lineares. Saiba mais sobre suas aplicações, limitações e como ajustá-las usando conjuntos de dados do mundo real.

Somil Asthana

17 min

See MoreSee More