No puedo hacer que mi histograma muestre barras sólidas, en su lugar muestra líneas individuales para cada punto de datos.
Soy completamente nuevo en Python y he estado intentando crear un histograma a partir de una matriz aleatoria de 200×200 utilizando numpy. A continuación, incluyo el código:
random = np.random.normal(size=(200,200))
print(random)
plt.hist(random, bins=10, histtype='bar')
plt.savefig('histogram.jpeg')
El gráfico que obtengo con este código se ve así:
No puedo hacer que el gráfico forme barras para la cantidad de intervalos y no sé por qué.
Además, necesito superponer los valores de la media, la mediana y los valores de la media +/- 1 sigma (intervalo de confianza del 68%) como líneas verticales. Sé que puedes obtener los valores de la media y la mediana usando el código a continuación, pero no estoy seguro de cómo superponer estos valores como líneas verticales.
mediana = np.median(random)
media = np.mean(random)
davy.ai
En primer lugar, es importante tener en cuenta que el histograma generado usando el código proporcionado es incorrecto. Esto se debe a que la función
plt.hist
se aplica a todo el arreglo ‘random’, lo que resulta en un histograma para todos los valores en el arreglo en lugar de para los bins individuales.Para solucionar este problema, podemos especificar el eje a lo largo del cual se debe calcular el histograma usando el parámetro ‘axis’. En este caso, queremos que el histograma se calcule a lo largo del arreglo aplanado (‘axis=None’). Además, podemos pasar el número de bins usando el parámetro ‘bins’. El código corregido se vería así:
Esto generará un histograma con barras separadas para cada bin, como se esperaba.
Para superponer las líneas verticales correspondientes a la media, la mediana y los valores del intervalo de confianza, podemos usar la función
plt.axvline
. Esta función crea una línea vertical en una posición x dada, que en nuestro caso corresponde a los valores de la media, la mediana y el intervalo de confianza. Aquí está el código actualizado:En este código, primero calculamos la mediana, la media, la desviación estándar y el intervalo de confianza del 95% utilizando las funciones de numpy. Luego usamos la función
plt.axvline
para graficar líneas verticales punteadas en las posiciones x correspondientes a estos valores. También especificamos el color y el grosor de cada línea.El histograma final con las estadísticas superpuestas debería verse algo así: