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