eri*_*mjl 25 python matplotlib
我花了一些时间搜索interwebs对于这个答案,我曾尝试寻找所有SO的答案也一样,但我觉得我没有正确的术语下来......请原谅我,如果这是一个重复一些已知的问题,我很乐意删除我的帖子并转而参考该帖子!
无论如何,我试图在Matplotlib中的同一个图上绘制两个直方图.我的两个数据源是500个元素长的列表.为了说明我面临的问题,请看下图:

如您所见,直方图在默认参数下具有不均匀的箱尺寸,即使箱的数量相同.我想保证两个直方图的bin宽度是相同的.有什么方法可以做到这一点吗?
提前致谢!
CT *_*Zhu 28
我认为,对于大多数情况而言,一致的方法可以轻松地工作,而不必担心每个数据集的分布范围,将数据集放在一起,确定二进制数边缘,然后绘制:
a=np.random.random(100)*0.5 #a uniform distribution
b=1-np.random.normal(size=100)*0.1 #a normal distribution
bins=np.histogram(np.hstack((a,b)), bins=40)[1] #get the bin edges
plt.hist(a, bins)
plt.hist(b, bins)
Run Code Online (Sandbox Code Playgroud)

mar*_*ion 12
我猜你可以使用range参数和bin参数为两个数据集提供相同的bin大小.
plt.hist(x, bins=n, range=(a,b))
Run Code Online (Sandbox Code Playgroud)
如果你保持(b-a)/n相同的比例,你应该最终使用相同的箱尺寸.
您应该使用bins以下返回的值hist:
import numpy as np
import matplotlib.pyplot as plt
foo = np.random.normal(loc=1, size=100) # a normal distribution
bar = np.random.normal(loc=-1, size=10000) # a normal distribution
_, bins, _ = plt.hist(foo, bins=50, range=[-6, 6], normed=True)
_ = plt.hist(bar, bins=bins, alpha=0.5, normed=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10671 次 |
| 最近记录: |