Gráfico de histograma con plt.hist ()

Soy un Python-Newbie y quiero trazar una lista de valores entre -0,2 y 0,2. La lista se ve así

[...-0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01489985147131656, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088...and so on]. 

En estadística, he aprendido a agrupar mis datos en clases para obtener una gráfica útil para un histograma, que depende de tan grandes datos.

¿Cómo puedo agregar clases en Python a mi gráfico?

Mi código es

plt.hist(data) 

y el histograma se ve como ingrese la descripción de la imagen aquí

Pero debería verse como mg src = «https://i.stack.imgur.com/k5rwR.png» alt = «ingrese la descripción de la imagen aquí» title = «Solo un ejemplo: ¡las escalas son diferentes!»>

Comentarios

  • Esto no está claro. ¿Está preguntando cómo agrupar los datos o cómo trazar los datos agrupados?
  • @ Stephen Rauch: Estoy solicitando agrupar los datos con plt.hist () o de otra manera. Después de agrupar los datos, quiero realizar el gráfico. @ Media: plt.hist (cum_returns_10_5, bins = range (min (cum_returns_10_5), max (cum_returns_10_5) + binwidth, binwidth)) NameError: nombre ' binwidth ' no está definido plt.hist (data, bins = range (min (data), max (data) + binwidth , bin width)) Su solución produce un error (mire arriba).
  • No debe incluir esta información en una respuesta. Puede comentar o editar su pregunta, o ambos.
  • bienvenido a la comunidad @Tom, use comentarios. la razón por la que no funciona es que tienes que configurarlos. son variables típicas con fines ilustrativos, debe establecer valores en lugar de ellas.
  • ¡Gracias por esa pista @Media! @Stephen Rauch: ¿Sería tan amable de darme un comentario sobre si agrupa los datos en Python que están escritos en una lista para poder trazarlos? Gracias por su ayuda 🙂

Respuesta

Su histograma es válido, pero tiene demasiados contenedores para ser útil.

Si desea un número de bins igualmente espaciados, simplemente puede pasar ese número a través del bins argumento de plt.hist, por ejemplo:

plt.hist(data, bins=10) 

Si desea que sus contenedores tengan bordes específicos, puede pasarlos como una lista a bins:

plt.hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]) 

Por último, también puede especificar un método para calcular los bordes del contenedor automáticamente, como auto (los métodos disponibles se especifican en la documentación de numpy.histogram_bin_edges ):

plt.hist(data, bins="auto") 

Ejemplo de código completo

import matplotlib.pyplot as plt import numpy as np # fix the random state for reproducibility np.random.seed(19680801); # sum of 2 normal distributions n = 500; data = 10 * np.random.randn(n) + 20 * np.random.randn(n) + 20; # plot histograms with various bins fig, axs = plt.subplots(1, 3, sharey=True, tight_layout=True, figsize=(9,3)); axs[0].hist(data, bins=10); axs[1].hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]); axs[2].hist(data, bins="auto"); 

ingrese la descripción de la imagen aquí

Respuesta

Debe especificar el tamaño del contenedor , si yo «v Resolví la pregunta. Como se indica aquí .

Puede dar una lista con los límites de los contenedores.

plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 100]) 

Si solo los desea distribuidos equitativamente, simplemente puede usar range:

plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth)) 

También puede tomar un vistazo a aquí y aquí .

Comentarios

  • Si los quiere distribuidos por igual, hay una forma más simple: en lugar de dar los límites de los contenedores como un argumento, simplemente dígale a matplotlib cuántos contenedores desea, por ejemplo plt.hist(data, bins=20).
  • @Xavier Gracias por su respuesta. Supongo que quizás desee enviar su respuesta. Como habrás notado, la pregunta aún no está cerrada 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *