如何在Python直方图中使用对数框
据我所知直方图function中的选项Log = True仅指y轴。
P.hist(d,bins=50,log=True,alpha=0.5,color='b',histtype='step')
我需要log10中的等分间隔。 有什么可以做到这一点?
使用logspace()创build一个几何序列,并将其传递给bin参数。 并将xax的比例设置为对数比例。
import pylab as pl import numpy as np data = np.random.normal(size=10000) pl.hist(data, bins=np.logspace(0.1, 1.0, 50)) pl.gca().set_xscale("log") pl.show()
最直接的方法是计算限制的log10,计算线性间隔的bin,然后通过提高到10的幂来转换回来,如下所示:
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()
日志直方图从.01到10 160wpb4.png
除了上述内容之外,在pandas数据框上执行此操作也是如此:
some_column_hist = dataframe['some_column'].plot(bins=np.logspace(-2, np.log10(max_value), 100), kind='hist', loglog=True, xlim=(0,max_value))
我会提醒的是,可能有一个正常化箱的问题。 每个垃圾箱比前一个垃圾箱大,因此必须除以它的大小以便在绘图之前对频率进行归一化,似乎我的解决scheme和HYRY的解决scheme都不能解释这个问题。
来源: https : //arxiv.org/pdf/cond-mat/0412004.pdf