hist
en matplotlib
La función hist
permite crear histogramas en Python al utilizar matplotlib. Para crear un histograma básico tan solo es necesario pasar una variable numérica a la función.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma
fig, ax = plt.subplots()
ax.hist(x)
# plt.show()
Histograma horizontal
Estableciendo el argumento orientation
como "horizontal"
puedes rotar los ejes y crear un histograma horizontal.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma
fig, ax = plt.subplots()
ax.hist(x, orientation = "horizontal")
# plt.show()
Histograma de densidad
El histograma que se crea por defecto con hist
es un histograma de frecuencias. Si prefieres crear un histograma de densidad tendrás que establecer el argumento density
como True
.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma
fig, ax = plt.subplots()
ax.hist(x, density = True)
# plt.show()
Histograma de frecuencias acumuladas
La función hist
también permite crear histogramas de frecuencias acumuladas, tan solo es necesario establecer cumulative = True
como argumento.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma
fig, ax = plt.subplots()
ax.hist(x, cumulative = True)
# plt.show()
Número de clases
El número por defecto de clases (bins) de un histograma hecho con la función hist
es 10. Sin embargo, esto puede que no sea la mejor opción para todos los conjuntos de datos. En este escenario, puedes utilizar el argumento bins
para elegir un número de clases más adecuado o establecer un método de selección. Los métodos de selección disponibles son 'auto'
, 'fd'
, 'doane'
, 'scott'
, 'stone'
, 'rice'
, 'sturges'
(el utilizado por defecto en el lenguaje de programación R) y 'sqrt'
.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma (demasiadas clases)
fig, ax = plt.subplots()
ax.hist(x, bins = 40)
# plt.show()
También puedes crear un histograma con varios grupos con la función. Para ello tan solo es necesario pasar una lista con varios conjuntos de datos, como en el ejemplo siguiente. Por defecto, las barras de los grupos se mostrarán una al lado de las otras.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x1 = np.random.normal(0, 1, 100)
x2 = np.random.normal(0, 1, 100)
x = [x1, x2]
# Histograma
fig, ax = plt.subplots()
ax.hist(x)
plt.show()
# plt.show()
Ten en cuenta que cuando se crea un histograma con varios conjuntos de datos, los datos no tienen por qué tener la misma dimensión.
La función proporciona la posibilidad de crear varios tipos de histograma además del utilizado por defecto ("bar"
).
“barstacked”
El método "barstacked"
apila las barras cuando hay varios grupos. Este tipo de histograma también se puede crear con stacked = True
.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x1 = np.random.normal(0, 1, 100)
x2 = np.random.normal(0, 1, 100)
x = [x1, x2]
# Histograma
fig, ax = plt.subplots()
ax.hist(x, histtype = "barstacked")
# plt.show()
“step”
El método "step"
genera un gráfico de líneas, es decir, muestra el borde exterior de las barras del histograma, mostrando su forma sin relleno.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma
fig, ax = plt.subplots()
ax.hist(x, histtype = "step")
# plt.show()
“stepfilled”
El último método disponible es el método "stepfilled"
, que es lo mismo que "step"
pero con color de relleno. Si tienes un grupo mostrará lo mismo que el tipo por defecto, pero si tienes varios grupos se solaparán uno sobre otro, como en el ejemplo siguiente.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x1 = np.random.normal(0, 1, 100)
x2 = np.random.normal(0, 1, 100)
x = [x1, x2]
# Histograma
fig, ax = plt.subplots()
ax.hist(x, histtype = "stepfilled")
# plt.show()
Color de fondor
El argumento color
permite cambiar el color azul por defecto de las barras del histograma.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma
fig, ax = plt.subplots()
ax.hist(x, color = "lightsteelblue")
# plt.show()
Color de los bordes
Por defecto, el color de borde de las barras es el mismo que el color de fondo, pero puedes utilizar el argumento edgecolor
para personalizar su color. Con el siguiente código puedes crear un histograma “clásico”, donde las barras se muestran separadas.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x = np.random.normal(0, 1, 100)
# Histograma
fig, ax = plt.subplots()
ax.hist(x, edgecolor = "white")
# plt.show()
Color por grupo
Por último, si tus datos contienen varios grupos puedes pasar una lista de colores al argumento color
para personalizar los colores de los grupos.
import numpy as np
import matplotlib.pyplot as plt
# Semilla para reproducibilidad
np.random.seed(4)
# Simulación de datos
x1 = np.random.normal(0, 1, 100)
x2 = np.random.normal(0, 1, 100)
x = [x1, x2]
# Histograma
fig, ax = plt.subplots()
ax.hist(x, color = ["lightsalmon", "mediumaquamarine"])
# plt.show()
También te puede interesar