Hasta donde yo sé, la opción Log = True en la función de histograma solo se refiere al eje y.
P.hist(d,bins=50,log=True,alpha=0.5,color='b',histtype='step')
Necesito que los contenedores estén igualmente espaciados en log10. ¿Hay algo que pueda hacer esto?
python
numpy
matplotlib
histogram
Brian
fuente
fuente
Respuestas:
use logspace () para crear una secuencia geométrica y páselo al parámetro bins. Y establezca la escala del eje x en escala logarítmica.
import pylab as pl import numpy as np data = np.random.normal(size=10000) pl.hist(data, bins=np.logspace(np.log10(0.1),np.log10(1.0), 50)) pl.gca().set_xscale("log") pl.show()
fuente
np.logspace(0.1,1.0,...)
creará un rango desde10**0.1
hasta10**1.0
, no desde0.1
hasta1.0
np.logspace(np.log10(0.1),np.log10(1.0),50)
La forma más directa es simplemente calcular el log10 de los límites, calcular los bins espaciados linealmente y luego volver a convertir aumentando a la potencia de 10, como se muestra a continuación:
import pylab as pl import numpy as np data = np.random.normal(size=10000) MIN, MAX = .01, 10.0 pl.figure() pl.hist(data, bins = 10 ** np.linspace(np.log10(MIN), np.log10(MAX), 50)) pl.gca().set_xscale("log") pl.show()
fuente
El siguiente código indica cómo se puede utilizar
bins='auto'
con la escala logarítmica.import numpy as np import matplotlib.pyplot as plt data = 10**np.random.normal(size=500) _, bins = np.histogram(np.log10(data + 1), bins='auto') plt.hist(data, bins=10**bins); plt.gca().set_xscale("log")
fuente
Además de lo que se dijo, realizar esto en marcos de datos de pandas también funciona:
some_column_hist = dataframe['some_column'].plot(bins=np.logspace(-2, np.log10(max_value), 100), kind='hist', loglog=True, xlim=(0,max_value))
Les advierto que puede haber un problema con la normalización de los contenedores. Cada bin es más grande que el anterior y, por lo tanto, debe dividirse por su tamaño para normalizar las frecuencias antes de graficar, y parece que ni mi solución ni la de HYRY tienen en cuenta esto.
Fuente: https://arxiv.org/pdf/cond-mat/0412004.pdf
fuente