En Python, un histograma está a una línea con plt.hist(), or with seaborn’s histplot() para valores por defecto más bonitos. Abajo hay ejemplos listos para copiar de un gráfico básico, una versión de frecuencia relativa y un gráfico de seaborn con una curva suave.
Matplotlib es la librería de graficación estándar. Dale a plt.hist() una lista o array de NumPy y agrupa los valores y dibuja las barras.
import matplotlib.pyplot as plt plt.hist(data, bins=20, color="steelblue", edgecolor="white") plt.title("Distribution of values") plt.xlabel("Value") plt.ylabel("Frequency") plt.show()
The key argument is bins. Pasa un entero para un número aproximado de barras, una lista de bordes para control exacto, o una regla como "auto" to let NumPy decide.
A veces quieres los números, no solo la imagen. numpy.histogram(data, bins=20) devuelve dos arrays — los conteos en cada intervalo y los bordes de los intervalos — sin dibujar nada. Es útil para construir tu propia tabla de frecuencias, exportar a CSV o alimentar los conteos a otro gráfico. Luego puedes pasar los mismos bins array to plt.hist() para que el gráfico y la tabla coincidan exactamente.
Pocos intervalos aplanan la forma; demasiados la convierten en ruido. Un punto de partida seguro es bins="auto", que usa el mayor entre las estimaciones de Sturges y Freedman–Diaconis. Para informes reproducibles, ajusta un número explícito como bins=20, or define exact edges with bins=range(0, 101, 10) so every reader sees the same intervals.
Call plt.savefig("histogram.png", dpi=300, bbox_inches="tight") before plt.show() to export a crisp, high-resolution image. Use a .svg en su lugar para una versión vectorial escalable que se mantiene nítida al imprimir.
Dos problemas aparecen a menudo. Primero, pasar una lista que contenga None or NaN puede distorsionar o romper el gráfico — filtra estos valores antes, por ejemplo con una comprensión de lista o data = data[~np.isnan(data)]. Second, forgetting plt.show() (fuera de un notebook) hace que la ventana nunca aparezca; en Jupyter la figura se renderiza en línea automáticamente.
To show proportions instead of raw counts, add density=True. Las barras se escalan para que el área total sea 1, que es lo que la mayoría de cursos de estadística quieren decir por un histograma de frecuencia relativa o probabilidad.
# Relative frequency: total area sums to 1 plt.hist(data, bins=20, density=True) plt.ylabel("Density") plt.show()
seaborn produce gráficos más bonitos con menos esfuerzo y puede superponer una estimación de densidad kernel en la misma llamada.
import seaborn as sns sns.histplot(data, bins=20, kde=True) # kde adds a smooth curve plt.show()
seaborn también facilita las comparaciones agrupadas: pasa un DataFrame y una hue columna y dibuja un histograma superpuesto codificado por color por grupo, lo cual es mucho más trabajo montar a mano en Matplotlib puro.
Si no estás en un entorno Python ahora mismo, pega tus números en el generador para un histograma instantáneo, estadísticas completas y una descarga con un clic en PNG, SVG o CSV.
Pass bins= to plt.hist(). Usa un entero para un conteo, una lista para bordes exactos, o una regla como cadena tal como bins="auto" or bins="sturges" to let NumPy choose.
Add density=True to plt.hist() para que las barras muestren una densidad cuya área total es 1. Para proporciones exactas, pasa weights=np.ones(len(data)) / len(data).
Matplotlib es la librería principal y te da control total. Seaborn se apoya en ella y produce valores por defecto más bonitos con menos código — sns.histplot() can even overlay a smooth KDE curve in one call.
Call plt.savefig("histogram.png", dpi=300, bbox_inches="tight") before plt.show() to export a high-resolution image for reports or print.