Un contenedor es el rango que representa el ancho de una barra del histograma a lo largo del eje X. También puedes llamar a esto el intervalo. (Wikipedia los define más formalmente como "categorías disjuntas").
La función Numpy histogram
no dibuja el histograma, pero calcula las ocurrencias de datos de entrada que caen dentro de cada contenedor, lo que a su vez determina el área (no necesariamente la altura si los contenedores no tienen el mismo ancho) de cada barra.
En este ejemplo:
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
Hay 3 compartimentos, para valores que van de 0 a 1 (excl 1.), de 1 a 2 (excl. 2) y 2 a 3 (. Incl 3) , respectivamente. La forma en que Numpy define estos contenedores si da una lista de delimitadores ([0, 1, 2, 3]
) en este ejemplo, aunque también devuelve los contenedores, ya que puede elegirlos automáticamente de la entrada, si no se especifica ninguno. Si bins=5
, por ejemplo, usará 5 intervalos de ancho igual distribuidos entre el valor mínimo de entrada y el valor máximo de entrada.
Los valores de entrada son 1, 2 y 1. Por lo tanto, bin "1 a 2" contiene dos apariciones (los dos valores 1
) y bin "2 a 3" contiene una ocurrencia (2
). Estos resultados están en el primer elemento en la tupla devuelta: array([0, 2, 1])
.
Dado que los contenedores aquí tienen el mismo ancho, puede usar el número de veces que aparezca la altura de cada barra. Cuando se retira, que tendría:
- una barra de altura 0 para la gama/bin [0,1] en el eje X,
- una barra de altura 2 para la gama/bin [1,2] ,
- una barra de altura 1 para rango/bin [2,3].
Puede representar esto directamente con Matplotlib (su función hist
también devuelve los contenedores y los valores):
>>> import matplotlib.pyplot as plt
>>> plt.hist([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]), <a list of 3 Patch objects>)
>>> plt.show()
Puede que también le interese [esta respuesta] (http://stackoverflow.com/a/5328669/372643) si desea trazarlas. [Matplotlib también puede calcularlos directamente] (http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.hist). Vea ejemplos [aquí] (http://matplotlib.sourceforge.net/examples/api/histogram_demo.html) y [aquí] (http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo_extended.html). – Bruno
Gracias por esta respuesta, ¡simplemente me ahorró una gran cantidad de problemas! – AlexFZ