tiempo real matrices lineas graficos grafico graficas graficar ejes dibujar crear barras python matplotlib histogram frequency

python - real - Configuración de una frecuencia relativa en un histograma de matplotlib



matplotlib ejes (2)

O puede usar set_major_formatter para ajustar la escala del eje y de la siguiente manera:

from matplotlib import ticker as tick def adjust_y_axis(x, pos): return x / (len(mydata) * 1.0) ax.yaxis.set_major_formatter(tick.FuncFormatter(adjust_y_axis))

simplemente llame a adjust_y_axis como se adjust_y_axis arriba antes de plt.show() .

Tengo datos como una lista de flotadores y quiero trazarlos como un histograma. La función Hist () hace el trabajo perfectamente para trazar el histograma absoluto. Sin embargo, no puedo averiguar cómo representarlo en un formato de frecuencia relativa; me gustaría tenerlo como una fracción o, idealmente, como un porcentaje en el eje y.

Aquí está el código:

fig = plt.figure() ax = fig.add_subplot(111) n, bins, patches = ax.hist(mydata, bins=100, normed=1, cumulative=0) ax.set_xlabel(''Bins'', size=20) ax.set_ylabel(''Frequency'', size=20) ax.legend plt.show()

Pensé que normed = 1 argumento lo haría, pero da fracciones que son demasiado altas y algunas veces son mayores que 1. También parecen depender del tamaño del contenedor, como si no estuvieran normalizadas por el tamaño del contenedor o algo. Sin embargo, cuando configuro acumulativo = 1, resume muy bien hasta 1. Entonces, ¿dónde está la trampa? Por cierto, cuando introduzco los mismos datos en Origen y los grafico, me da las fracciones perfectamente correctas. ¡Gracias!


Porque la opción normalizada de hist devuelve la densidad de puntos, por ejemplo, dN / dx

Lo que necesitas es algo así:

# assuming that mydata is an numpy array ax.hist(mydata, weights=np.zeros_like(data) + 1. / data.size) # this will give you fractions