Sar*_*akC 3 python matplotlib histogram
我对绘制作为幂定律分布的一组点的概率分布感兴趣。此外,我想使用对数合并来消除尾部的较大波动。如果我仅使用对数分箱,并将其以对数对数刻度绘制,例如
pl.hist(MyList,log=True, bins=pl.logspace(0,3,50))
pl.xscale('log')
Run Code Online (Sandbox Code Playgroud)
例如,那么问题是较大的垃圾箱占了更多的点,即我的垃圾箱的高度没有按垃圾箱的大小缩放。
有没有一种方法可以使用对数分箱,但是让python通过分箱的大小来缩放所有高度?我知道我可以手动以某种回旋方式完成此操作,但是似乎这应该是一个存在的功能,但是我似乎找不到它。如果您认为直方图从根本上来说是代表我的数据的一种不好的方式,并且您有一个更好的主意,那么我也很想听听。
谢谢!
如果您对直方图有特殊要求,Matplotlib将无济于事。但是,您可以使用numpy轻松创建和操作直方图。
import numpy as np
from matplotlib import pyplot as plt
# something random to plot
data = (np.random.random(10000)*10)**3
# log-scaled bins
bins = np.logspace(0, 3, 50)
widths = (bins[1:] - bins[:-1])
# Calculate histogram
hist = np.histogram(data, bins=bins)
# normalize by bin width
hist_norm = hist[0]/widths
# plot it!
plt.bar(bins[:-1], hist_norm, widths)
plt.xscale('log')
plt.yscale('log')
Run Code Online (Sandbox Code Playgroud)
显然,当您以这种非显而易见的方式显示数据时,必须非常注意如何正确标记y轴并编写内容丰富的图形标题。
| 归档时间: |
|
| 查看次数: |
4879 次 |
| 最近记录: |