¿Cómo graficar un Histograma en Python?

In [1]:
import matplotlib.pyplot as plt

datos = [1,2,2,3,3,5,1,2,5,2,4,5]

plt.title('Ejemplo') #titulo
plt.hist(datos,bins=5) #datos, grupos
plt.show()
plt.clf()

¿Qué es un histograma?

Un histograma es una representación gráfica de una variable en forma de barras, donde la superficie de cada barra es proporcional a la frecuencia de los valores representados.[101]

Usando matplotlib para graficar el Histograma

Matplotlib es una biblioteca completa para crear visualizaciones estáticas, animadas e interactivas en Python. [102]

In [ ]:
# Ponemos el títulos
plt.title('Ejemplo')

# Usamos hist() para graficar el histograma [103]
# indicamos que datos usar para graficar,
# y cuantos grupos crear
plt.hist(datos,bins=5)

# Indicamos que muestre la imagen
plt.show()

# Limpiar la figura actual
plt.clf()

Podemos usar distintas configuraciones para mostrar el gráfico

In [ ]:
# parametros para hist()
plt.hist(
    datos, # los datos a usar
    bins=5, # cuantos grupos crear
    color='red' #color de las barras
    linewidth=2, # tamaño de los bordes
    edgecolor = 'black', # el color de los border
)

# Indicar que muestre el recuadro sobre la imagen
plt.grid(True)

El código completo sería:

In [27]:
import matplotlib.pyplot as plt

datos = [1,2,2,3,3,5,1,2,5,2,4,5]

plt.title('Ejemplo') #titulo
plt.hist(
    datos,
    bins=5,
    color='red',
    edgecolor = 'black',
    linewidth=2
)
plt.grid(True)
plt.show()
plt.clf()

Cambiando algunos valores tenemos:

In [37]:
import matplotlib.pyplot as plt

datos = [1,2,2,3,3,5,1,2,5,2,4,5]

plt.title('Ejemplo') #titulo
plt.hist(
    datos,
    bins=5,
    color='red',
    edgecolor = 'black',
    linewidth=1
)
# plt.grid(True)
plt.show()
plt.clf()

Mostrar más de un Histograma

In [48]:
import matplotlib.pyplot as plt

datos = [1,2,2,3,3,5,1,2,5,2,4,5]

plt.subplot(121)
plt.title('Histograma 1') #titulo
plt.hist(datos,bins=5)

plt.subplot(122)
plt.title('Histograma 2') #titulo
plt.hist(datos,bins=3,color="red")
plt.grid(True)

plt.show()
plt.clf()

[301]

También podemos usar el siguiente código:

In [74]:
import matplotlib.pyplot as plt

datos = [1,2,2,3,3,5,1,2,5,2,4,5]

fig, axs = plt.subplots(1, 2)

axs[0].hist(datos,bins=5)
axs[1].hist(datos,bins=3,color="red")

plt.show()
plt.clf()
<matplotlib.figure.Figure at 0x7f0f3e19d668>

[201]

Graficar un Histograma en 2D

In [76]:
import matplotlib.pyplot as plt

datos = [1,2,2,3,3,5,1,2,5,2,4,5]

fig, axs = plt.subplots()
hist = axs.hist2d(datos,datos)

plt.show()
plt.clf()
<matplotlib.figure.Figure at 0x7f0f3d854ef0>
In [91]:
import matplotlib.pyplot as plt

x = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]
y = [2,3,4,1,1,3,3,2,3,4,1,1,3,2,1,2]

fig, axs = plt.subplots()
hist = axs.hist2d(x,y)

plt.show()
plt.clf()
<matplotlib.figure.Figure at 0x7f0f3dfd0a20>

Si usamos random, para generar números aleatorios tenemos

In [113]:
import matplotlib.pyplot as plt
import random

random.seed(1234)
n = 100
x = [random.randint(0,x) for x in range(n)]
y = [random.randint(0,x) for x in range(n)]

fig, axs = plt.subplots()
hist = axs.hist2d(x,y)

plt.show()
plt.clf()
<matplotlib.figure.Figure at 0x7f0f3d7c5c88>

No hay comentarios.:

Publicar un comentario