Número y ancho de las barras o clases de un histograma en ggplot2

Histograma por defecto

Por defecto, los cálculos para crear un histograma con geom_histogram a través de stat_bin usan 30 barras o clases, lo que no es siempre un buen valor por defecto.

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(05022021)
x <- rnorm(600)
df <- data.frame(x)

# Histograma por defecto
ggplot(df, aes(x = x)) + 
  geom_histogram()

Número de clases o barras por defecto en ggplot2

Esta es la razón por la que recibes el siguiente mensaje cada vez que creas un histograma por defecto en ggplot2:

stat_bin() using bins = 30. Pick better value with binwidth.

Las posibles opciones para solucionar este problema son seleccionar el número de clases o barras con el argumento bins o modificar el ancho de cada barra con el argumento binwidth.

El argumento bins

El número de clases o barras del histograma se puede personalizar con el argumento bins de la función geom_histogram. En este ejemplo 15 clases parece una buena elección mientras que 50 son demasiadas.

Selección del número de clases de un histograma en ggplot2

15 clases

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(05022021)
x <- rnorm(600)
df <- data.frame(x)

# Clases del histograma
ggplot(df, aes(x = x)) + 
  geom_histogram(colour = 4, fill = "white", 
                 bins = 15)

Controlar el número de barras de un histograma en ggplot2

50 clases

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(05022021)
x <- rnorm(600)
df <- data.frame(x)

# Clases del histograma
ggplot(df, aes(x = x)) + 
  geom_histogram(colour = 4, fill = "white", 
                 bins = 50)

El argumento binwidth

La otra opción es usar el argumento binwidth de la función geom_histogram. Este argumento controla el ancho de cada barra sobre el eje X. Ten en cuenta que este argumento sobrescribe al argumento bins.

Binwidth de 0.5

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(05022021)
x <- rnorm(600)
df <- data.frame(x)

# Ancho de las barras del histograma
ggplot(df, aes(x = x)) + 
  geom_histogram(colour = 4, fill = "white", 
                 binwidth = 0.5)

Controlar el ancho de las barras de un histograma de ggplot2

Binwidth de 0.15

# install.packages("ggplot2")
library(ggplot2)

# Datos
set.seed(05022021)
x <- rnorm(600)
df <- data.frame(x)

# Ancho de las barras del histograma
ggplot(df, aes(x = x)) + 
  geom_histogram(colour = 4, fill = "white", 
                 binwidth = 0.15)

Argumento binwidth de la función geom_histogram

La función hist de R base usa el método de Sturges para calcular el número de clases, siendo este un buen valor por defecto.

También te puede interesar