繁体   English   中英

Matplotlib:如何使两个直方图具有相同的bin宽度?

[英]Matplotlib: How to make two histograms have the same bin width?

我花了一些时间在搜索互联网上寻找答案,我也试着寻找答案,但我觉得我没有正确的术语......如果这是重复的,请原谅我一些已知的问题,我很乐意删除我的帖子并转而参考该帖子!

无论如何,我试图在Matplotlib中的同一个图上绘制两个直方图。 我的两个数据源是500个元素长的列表。 为了说明我面临的问题,请看下图:

不均匀的直方图

如您所见,直方图在默认参数下具有不均匀的箱尺寸,即使箱的数量相同。 我想保证两个直方图的bin宽度是相同的。 有什么方法可以做到这一点吗?

提前致谢!

我认为,对于大多数情况而言,一致的方法可以轻松地工作,而不必担心每个数据集的分布范围,将数据集放在一起,确定二进制数边缘,然后绘制:

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)

在此输入图像描述

我猜你可以使用range参数和bin参数为两个数据集提供相同的bin大小。

plt.hist(x, bins=n, range=(a,b))

如果你保持(ba)/n的比例相同,你应该最终使用相同的箱尺寸。

您应该使用hist返回的值中的bins

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)

两个具有相同分级的matplotlib直方图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM