Guía de histograma en R

Cómo Hacer un Histograma en R

Sáltate la configuración

O crea tu histograma aquí — sin instalar R

Tus datos se quedan en tu navegador. Gratis, sin registro, funciona en móvil — descarga un PNG, SVG o CSV cuando termines.

Generador de histogramas
comas, espacios o saltos de línea
8
BarrasBorde

Gráficos recientes (guardados en este dispositivo)

Pega tus datos y pulsa Crear histograma. Tu gráfico, estadísticas resumidas y una tabla de frecuencias completa aparecerán aquí.

Genera un gráfico para ver una lectura automática de su forma, asimetría y un número recomendado de intervalos.

Estadísticas resumidas

Tabla de distribución de frecuencias

La tabla de frecuencias intervalo por intervalo aparecerá aquí después de generar un gráfico.

¿Prefieres construirlo tú mismo en la herramienta de abajo? Sigue leyendo — el paso a paso completo está aquí.

R te da dos grandes formas de construir un histograma: la función integrada hist() para un resultado rápido, y ggplot2 para gráficos pulidos y listos para publicar. Ambas se muestran abajo con código listo para copiar, incluyendo cómo ajustar el número de intervalos y cambiar a frecuencia relativa.

1. The base R hist() function

The hist() es parte de R base, así que no hay nada que instalar. Pásale un vector numérico y agrupa los datos y dibuja las barras. Los argumentos de abajo cubren casi todo lo que necesitas día a día.

Example right-skewed histogram of server response times
Example output: a right-skewed distribution of response times.
R · hist()
# Basic histogram from a numeric vector
hist(data)

# A fuller, report-ready version
hist(data,
     breaks = 10,                # bins: a number or a method
     col    = "steelblue",       # bar color
     border = "white",           # bar outline
     main   = "Distribution of values",
     xlab   = "Value",
     ylab   = "Frequency")

The breaks es el argumento a recordar: controla cuántos intervalos obtienes. Pasa un número para un conteo aproximado, un vector de puntos de corte para control exacto, o una regla como "Sturges" or "FD" (Freedman–Diaconis).

Choosing the number of bins in R

R no siempre te da el número exacto de intervalos que pides — con un número simple, breaks se trata como sugerencia y R redondea a puntos de corte “bonitos”. Para intervalos exactos, pasa una secuencia: hist(data, breaks = seq(0, 100, by = 10)) crea intervalos exactamente de 10 de ancho desde 0 hasta 100. Los métodos integrados "Sturges", "Scott" and "FD" each apply a different rule of thumb; Freedman–Diaconis ("FD") es un buen valor por defecto para conjuntos más grandes o asimétricos porque se adapta a la dispersión de los datos.

Common errors with hist()

If hist() lanza un error, la causa habitual es que tu entrada no es numérica — una columna de factor o carácter fallará. Envuélvela en as.numeric() primero, y elimina los valores faltantes con na.omit() si hace falta. Otra sorpresa frecuente es que el eje y muestra densidad en vez de conteos: eso pasa cuando pones cortes desiguales, porque R cambia a densidad automáticamente. Añade freq = TRUE to force counts.

A histogram from a frequency table in R

Si solo tienes conteos, puedes reconstruir los datos brutos con rep() — por ejemplo rep(c(5, 15, 25), times = c(3, 8, 12)) recrea tres clases con 3, 8 y 12 observaciones — luego pásalo a hist(). Para datos ya agrupados con alturas de barra que ya conoces, barplot() sin espaciado suele ser la opción más simple.

2. A nicer histogram with ggplot2

Cuando el gráfico va a un informe o artículo, ggplot2 vale la línea extra. Mapea tu valor a la estética x y añade un geom_histogram() layer.

R · ggplot2
library(ggplot2)

ggplot(df, aes(x = value)) +
  geom_histogram(bins  = 20,
                 fill  = "steelblue",
                 color = "white") +
  labs(title = "Distribution of values",
       x = "Value", y = "Count")

Use bins for a target number of bars or binwidth para fijar el ancho de cada intervalo en unidades de datos. Para mostrar proporciones en vez de conteos, transforma la estética y:

R · relative frequency
# Relative frequency (proportions on the y-axis)
ggplot(df, aes(x = value)) +
  geom_histogram(aes(y = after_stat(count / sum(count))),
                 bins = 20) +
  labs(y = "Relative frequency")

No R installed? Try it in your browser

Si solo necesitas un gráfico y los números resumidos, puedes saltarte la configuración. Pega tus valores en el generador y descarga un PNG, SVG o CSV en segundos — útil para una comprobación rápida antes de comprometerte con código.

Open the generador de histogramas gratis

Preguntas frecuentes

R histogram questions

How do I change the number of bins in R?

Use the breaks argument in hist(), for example hist(data, breaks = 20). You can pass a single number, a vector of break points, or a method name such as "Sturges" or "FD". In ggplot2 use bins = or binwidth = inside geom_histogram().

hist() vs ggplot2 — which should I use?

hist() está integrado y es perfecto para un vistazo rápido. ggplot2 requiere una línea extra para cargar pero da mucho más control sobre colores, temas, facetas y leyendas, por eso es la opción habitual para gráficos de publicación.

How do I overlay two histograms in R?

En R base, dibuja el primero con hist(a, col = rgb(0,0,1,0.5)) luego añade el segundo con hist(b, col = rgb(1,0,0,0.5), add = TRUE) using semi-transparent colors. In ggplot2, map a grouping variable to fill and set position = "identity" with alpha = 0.5.

How do I save an R histogram as an image?

Wrap the plot in a device: png("hist.png"); hist(data); dev.off(). For ggplot2 use ggsave("hist.png", width = 7, height = 5).

Keep going

Guías relacionadas