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)
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");
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 🙂