Hacer un histograma en Python.

En este tutorial explicamos cómo hacer un histograma en Python usando Matplotlib. Te explicamos cómo configurar el histograma para que se vea mejor.

Un histograma es un gráfico que muestra la frecuencia con que se repite algún valor.

Podemos hacer un histograma en Python con la librería Matplotlib. De una manera muy sencilla.

Resumen para hacer un histograma en Python.

Como resumen, primero debes importar la librería en de Matplotlib.

import matplotlib.pyplot as plt

Luego tener los datos del histograma, en este caso los generamos con números aleatorios:

import random
y=[]

for i in range(200):       
   y.append(random.randint(0, 10))

plt.xlabel("Números")

Y por último graficaremos el histograma usando el comando plt.hist(…). El cual tiene varios parámetros para configurarlo.

plt.hist(y, bins = 10, color = "blue", rwidth=0.9)
plt.title("Ejemplo Histograma")
plt.xlabel("Numeros")
plt.ylabel("Frecuencia")
plt.show()

Bins, es el número de tiras del histograma, color es el color del histograma y rwidth es el ancho del histograma esta en porcentaje. La grafica nos queda así:

Hacer un histograma en Python.

Creando un histograma con matplotlib.

Ahora te explicamos de forma más detallada como hacer un histograma en Python usando la librería de Matplotlib.

Primero debemos importar la librería y tener los datos que usaremos en el histograma.

Los datos los generamos usando números aleatorios. En este caso generaremos 100 números aleatorios entre 0 y 10. Y mostraremos un histograma con la frecuencia en que se generaron los números. Así veremos qué número se generó más y cual menos.

Ahora pasmos a graficar el histograma, para esto usamos el comando plt.hist(…). Luego le damos un título a la gráfica, un título a los ejes y mostramos la gráfica.

import matplotlib.pyplot as plt
import randomy=[]

for i in range(200):        
    y.append(random.randint(0, 10)) 
plt.hist(y, bins = 10, color = "blue", rwidth=0.9)
plt.title("Ejemplo Histograma")
plt.xlabel("Números")
plt.ylabel("Frecuencia")
plt.show()

Esta es la imagen que debemos obtener:

Ancho histograma matplotlib

Algunos de los parámetros más importantes del histograma son los siguientes:

  • bins, Son los datos con los que se genera el histograma. Pueden ser números o variables tipo String.
  • Color, es el color del histograma.
  • Cumulative, puede ser falso o verdadero. Por default es falso. Muestra el histograma pero con la suma de los valores más pequeños.
  • Histtype, es el tipo de histograma a dibujar. Tenemos 4 opciones:
    • Bar, es la opción por default.
    • Barstacked
    • Step
    • Stepfilled
  • Align, es la alineación horizontal, de las barras del histograma. Tenemos 3 opciones:
    • Left.
    • Mid. Es la opción por dafault.
    • Right
  • Orientation, es la orientación, puede ser “vertical” y “horizontal”. Por default es vertical.
  • Rwidth, es el ancho de las barras, como una fracción de el ancho del bin. Un valor de 1 ocupa todo el bin, y es el valor por default.
  • Log, puede ser falso o verdadero. Se usa para poner los ejes del histograma con base logarítmica.

Para más detalles puedes ver la documentación oficial.

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.hist.html

Histograma en Python con arreglo de Strings.

Y si en lugar de números tenemos una lista de nombres y queremos saber cuál nombre se repite más.

Pues con Python podemos hacer un histograma de este tipo, de manera muy sencilla. Este es el código para contar cuantas veces aparecen las palabras.

import matplotlib.pyplot as plt
y=["perro", "gato", "gato", "raton", "pollo", "gato", "perro", "gato"]
plt.hist(y)
plt.title("Ejemplo Histograma")
plt.xlabel("Números")
plt.ylabel("Frecuencia")
plt.show()

Este es el histograma que veremos:

Ancho histograma matplotlib

Ejemplos de cómo hacer un histograma en Python.

Podemos crear un histograma que no sea del tipo barra:

Histograma python step

plt.hist(y, bins = 10, color = "blue", rwidth=0.9, histtype="step")
plt.title("Ejemplo Histograma")
plt.xlabel("Números")
plt.ylabel("Frecuencia")

O bien un histograma con orientación vertical:

Histograma python orientation

plt.hist(y, bins = 10, color = "blue", rwidth=0.9, orientation="horizontal")
plt.title("Ejemplo Histograma")
plt.xlabel("Números")
plt.ylabel("Frecuencia")
plt.show()

También podemos configurar las barras para que se vean más delgadas.

Histograma matplotlib whidth

plt.hist(y, bins = 10, color = "blue", rwidth=0.2)
plt.title("Ejemplo Histograma")
plt.xlabel("Números")
plt.ylabel("Frecuencia")
plt.show()

Para más tutoriales de Matplotlib ve a la sección de matplotlib.